Является ли Android FragmentTransaction.replace() потокобезопасным?
Я помню, что только поток пользовательского интерфейса может изменять вид действия, поток без пользовательского интерфейса не может изменять вид. Так является ли метод replace(), который вы найдете в коде, потокобезопасным? если код правильный, почему этот метод может это сделать?(спасибо)
Это код:
public class SelectBookActivity extends Activity implements
BookListFragment.Callbacks
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// inflate a ListFragment and a container
setContentView(R.layout.activity_book_twopane);
}
// the method in the interface
@Override
public void onItemSelected(Integer id)
{
Bundle arguments = new Bundle();
arguments.putInt(BookDetailFragment.ITEM_ID, id);
BookDetailFragment fragment = new BookDetailFragment();
fragment.setArguments(arguments);
getFragmentManager().beginTransaction()
.*replace*(R.id.book_detail_container, fragment)
.commit();
}
}
1 ответ
Метод commit()
Планирует фиксацию этой транзакции. Фиксация происходит не сразу; это будет запланировано как работа над основным потоком, которая будет сделана в следующий раз, когда поток будет готов.