После того как я успешно запускаю следующее намерение:Приложения не отвечает после запуска ACTION_VIEW Намерения
startActivity(new Intent(Intent.ACTION_VIEW, SOME_URL));
Браузер сапог до штрафа и загружает ссылку, но когда я пытаюсь вернуться к моему приложению ответ вяло. Когда приложение в конце концов запускается, меня встречает черный экран и, наконец, диалоговое окно «Приложение не отвечает».
Ошибок в logcat, отсутствие очевидных проблем с памятью, ничего не указывает на то, что я сделал неправильно.
Деятельность, которая запускает намерение довольно простое действие, с одним фрагментом:
public class LinkActivity extends AppCompatActivity {
@BindView(R.id.toolbar) Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_link);
ButterKnife.bind(this);
setSupportActionbar(mToolbar);
setupActionBar();
if(savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.content, LinkFragment.newInstance()).commit();
}
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
}
}
}
И фрагмент использует комбинацию RxJava, модифицирование и Dagger ‡, чтобы загрузить список ссылок:
public class LinkFragment extends Fragment {
@Inject RestService mRestService;
@BindView(R.id.recycler) RecyclerView mRecyclerView;
public static LinkFragment newInstance() {
return new LinkFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_link, container, false);
Injector.getContextComponent().inject(this);
ButterKnife.bind(this, view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext());
mRecyclerView.addItemDecoration(new DividerDecoration(getContext());
mRecyclerView.setAdapter(new LinkAdapter(new ArrayList<>()));
mRestService.getLinks()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onNext, this::onError);
return view;
}
private void onNext(Response<Link> response) [
LinkAdapter adapter = new LinkAdapter(response.data());
adapter.setOnItemClickListener(this::onItemSelected);
mRecyclerView.swapAdapter(adapter, false);
}
private void onError(Throwable throwable) {
Timber.w(throwable, "Failed to obtain links");
}
private void onItemSelected(int position, View view, Link link) {
startActivity(new Intent(Intent.ACTION_VIEW, link.getUri());
}
}