2017-10-30 10 views
0

ライフサイクルライブラリを使用しているアプリがありますが、「異なるライフサイクルの同じオブザーバを追加できません」というIllegalArgumentExceptionが表示されます私が安全だと思ったonCreateのオブザーバーを追加してください。私のオブザーバーのほとんどは、オブザーバーがリサイクルされていないので、ここでは問題にはならないと思われる匿名のクラスによって追加されます。Androidライフサイクルライブラリ:異なるライフサイクルの同じオブザーバを追加できません

private GpsState gpsState; 

void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getLifecycle().addObserver(gpsState); 
    gpsState.observe(this, (state) -> { 
     // ... 
    }); 
} 

この例でGpsStateは、GPSの現在の状態を提供するために、LiveDataを拡張しON_RESUME状態に達したときに特定の値を更新することができるようにLifecycleObserverを実装する:一つはthisを使用しています。

私は間違っていると思いますか?

答えて

0

私の場合、問題はラムダオブザーバーの方法では空でした。私はちょうどそれに何かを追加しようとし、問題は解決されました。たとえば、

gpsState.observe(this, (state) -> { 
       Log.d(this.getClass().getSimpleName(), BaseNavigationActivity.this.toString()); 

}); 
+1

非常に近いですが、空ではありませんが、コンパイラに同じインスタンスを再利用させる静的オブジェクトにのみアクセスしていました。 – TheHebrewHammer

関連する問題