1. ホーム
  2. android

[解決済み] スワイプでアプリが強制終了したとき、実行中のサービスをどのように処理するか?

2022-08-13 23:13:32

質問

アプリを実行中にホームボタンを押すと、アプリがバックグラウンドになります。ホームボタンを長押しして、最近のアプリの一覧からアプリをスワイプして終了させると、次のようなイベントが発生しません。 onPause() , onStop() または onDestroy() が呼び出されると、プロセスは終了してしまいます。もし私が自分のサービスを停止し、通知を停止し、リスナーを登録解除したい場合、どのようにすればよいのでしょうか?私はかなりの数の記事やブログを読みましたが、有用な情報は得られず、それに関する文書も見つかりませんでした。 どんな助けでも感謝します。 事前にありがとうございます。

どのように解決するのですか?

同じような問題を解決したところです。

以下は、その サービスを停止するだけで の場合、最近のアプリ一覧からスワイプしてアプリを終了させることができます。

Manifestファイルの中で、フラグ stopWithTask として true をサービス用とします。のように。

<service
    android:name="com.myapp.MyService"
    android:stopWithTask="true" />

しかし、リスナーの登録を解除し、通知などを停止したいとおっしゃっているので、この方法をお勧めします。

  1. マニフェスト・ファイルの内部で、フラグ stopWithTask として false をサービス用とします。のように。

    <service
        android:name="com.myapp.MyService"
        android:stopWithTask="false" />
    
    
  2. では、あなたの MyService サービスにおいて、オーバーライドメソッド onTaskRemoved . (これは stopWithTask に設定されている場合のみ発生します。 false ).

    public void onTaskRemoved(Intent rootIntent) {
    
        //unregister listeners
        //do any other cleanup if required
    
        //stop service
        stopSelf();  
    }
    
    

参照 私の質問 を参照してください。このコードには、他の部分も含まれています。

これが役立つことを願っています。