2016-06-22 2 views
0

После того как я успешно запускаю следующее намерение:Приложения не отвечает после запуска 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()); 
    } 

} 

ответ

0

После нахождения двух похожих вопросов с похожими ответами (How to spot app freeze causes when app is returning from pause state?, Android App freezes after implementing Google Firebase), предлагая, чтобы Google Play Services мог быть виновником, я начал исследовать.

Оба ответа предложил мне снять следующую зависимость:

compile 'com.android.gms:play-services:9.0.2' 

Но мое приложение использует эту зависимость, а также следующие игровые услуги зависимостей:

compile 'com.google.android.gms:play-services-wearable:9.0.2' 
compile 'com.google.android.gms:play-services-gcm:9.0.2' 
compile 'com.google.android.gms:play-services-location:9.0.2' 
compile 'com.google.android.gms:play-services-analytics:9.0.2' 

Раньше я использовал классы как из библиотеки основных игровых сервисов, так и из библиотеки загружаемых игровых сервисов как в моем мобильном модуле, так и в модуле моего износа. Но я заметил, что я убрал необходимость в модуле износа в мобильном модуле, поэтому я удалил его из мобильного модуля (сохраняя его в модуле износа). Как-то это решило проблему.

У меня нет подсказки, почему, поэтому, если у кого-то есть мысли, пожалуйста, поделитесь.