2016-07-18 7 views
0

私自身が一時停止または終了したときにのみサービスを終了する方法を探しています。私が1つのアクティビティを指しているわけではないことに注意してください。一時停止または強制終了されている間に、アプリケーション内のアクティビティがフォアグラウンドにあるときに探しています。私はたくさんのアクティビティを持っているので、BaseActivityからそれらをすべて拡張したくありません。これを行う他の方法はありますか?私たちのアプリケーション/サービスが 殺された後アプリ全体を一時停止して終了し、基本アクティビティを使用していない場合にのみサービスを停止する方法

+1

これをチェックしてくださいhttps://github.com/friendlyrobotnyc/TinyDancer/blob/master/library/src/main/java/com/codemonkeylabs/fpslibrary/Foreground.java – aptyp

+0

これは意味がありません。あなたの 'サービス'が何をしているのか、なぜあなたはそのような変な振る舞いが必要なのかを説明してください。 –

+1

@DavidWasser - 異常な動作?サービスのライフサイクルを制御するアクティビティが奇妙な動作だと思うなら、あなたはAndroidに関する多くの経験があるとは思わない。 –

答えて

0

セットのごApplication

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { 
     @Override 
     public void uncaughtException(Thread thread, Throwable ex) { 
       // Kill your service here 
       android.os.Process.killProcess(android.os.Process.myPid()); 
       System.exit(10); 
      } 
     }); 
+0

アプリを一時停止/終了するとキャッチされない例外がトリガーされますか?スレッド例外が発生したと思われる理由を説明してください。 –

+0

Androidアプリの「閉じる」はありません!!だから私はそれがクラッシュであると思う。 – hadilq

0

START_STICKY

システムのonCreateであなたのメインスレッドのキャッチされない例外ハンドラは、サービスを再作成しようとします

START_NOT_STICKY

私たちのアプリケーション/サービスが

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
     // We want to stop this service, when our Application is 
     // not running (foreground/background), so return non-sticky. 
     return START_NOT_STICKY; 
} 

希望を殺された後

システムでは、これはあなたを助けるでしょう、あなたのサービスを再作成しようとしません!

+0

私はサービスの再起動を心配していません。前述したように、私のアプリ内のアクティビティが一時停止または閉じられたときにサービスを終了する必要があります。 –

+0

** START_NOT_STICKY **フラグでサービスを開始すると、アプリケーションがフォアグラウンド/バックグラウンドでアクティブでない場合、システムはサービスを強制終了します。 –

+0

両方の定義には、「サービスのプロセスが強制終了されたとき」にのみ呼び出されることが明示されています。アプリがonPauseになると、プロセスは強制終了されません。 –

関連する問題