2016-06-22 5 views
0

ACTION_VIEWはテントの起動後に応答しません。アプリが最終的に起動すると、黒い画面が表示され、最後に「アプリケーションが応答していません」というダイアログが表示されます。アプリケーションは、私は成功し、次の意図を起動した後

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、改造やダガー‡の組み合わせを使用しています。

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)の2つの同様の質問を見つけたら、Google Playサービスの追加が原因である可能性があることを示唆したため、調査を開始しました。

どちらの答えは、私は次の依存関係を削除することが示唆された:

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' 

は以前、私が使用していました私のモバイルモジュールと私のウェアモジュールの両方で、コアプレイサービスライブラリとウェアラブルプレイサービスライブラリのクラスを提供しています。しかし、私は自分のモバイルモジュールでウェアモジュールの必要性を取り除いたので、モバイルモジュールから取り除いた(着用モジュールに入れたまま)。どういうわけか、これで問題は解決しました。

私は理由がないので、だれでも考えがあれば分かち合ってください。

関連する問題