2017-12-03 24 views
0

私はActivity.onStopでサービスをアンバインドする前に、主な活動はViewModelには、長い時間のためにクリアされない

を破壊した後、いくつかの時間(2分)のために働き続けることになったサービスを持っていますが、今私が移動ViewModelへのコード(私のライブをより簡単にするため)、MainActivity onDestroyは他のアプリケーションに切り替えたときでも呼び出されないことに気付きました。

MainActivityが破棄されないとすぐに、MainViewModelはバックグラウンドで長時間実行され続けます。

他のアクティビティにはこのような問題はなく、私が戻ってくると破壊されます。

メインアクティビティをより頻繁に停止するようにOSに依頼する方法はありますか?

+0

コードを追加してください。 – motis10

+0

onStopが呼び出されましたが、onDestroyは呼び出されませんでした。そのため、アクティビティは、予想以上に長い時間バックグラウンドで実行されています。戻るボタンを押すとすぐにonDestroyが呼び出されます –

+0

クリックアプリ(四角形)または自宅(円)をクリックするとこの問題が発生します –

答えて

1

LifecycleObseverインターフェイスを実装して、ViewModelライフサイクルを認識できるようにすることができます。このように:

public class ConfirmDetailsViewModel extends LifecycleObserver { 

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) 
    void onPause() { 
     // handle on pause senario 
    } 
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) 
    void onDestroy() { 
     // handle on destroy senario 
    } 
    // and so on ... 


} 
関連する問題