2012-12-26 7 views
9

に閉鎖は、Android

  1. ユーザー力が設定で私のアプリを閉じた場合AlarmManagerを使って私のアプリで設定されたアラームはクリアされます。
  2. いくつかのタスクキラーアプリは私のアプリプロセスを自動殺しました。
  3. フロントアプリのメモリが必要なため、Android自体がアプリを強制終了しました。

どうすれば検出できますか?これらのすべてのケースが私のアラームに影響しないように私のアラームを設定する方法。

答えて

28

ユーザーが強制的に設定でアプリケーションを終了します。

はい、これはアラームをクリアします。

いくつかのタスクキラーアプリは私のアプリのプロセスを自動殺しました。

これは、Androidのいずれかの最新バージョンを明確にアラームをしません。

フロントアプリのメモリが必要なため、Android自体がアプリを殺しました。

これは明確なアラームをしません。

私はそれを検出しない方法を教えてください?

アラームが最後に発生した時刻の記録を維持します(例:SharedPreferences)。コードが実行されると(たとえば、アクティビティが開始されたLAUNCHER)、最後のアラーム時刻を確認します。それはずっと前のことでしたが、あなたのアラームがクリアされていることを知っているので、それらのスケジュールを変更する必要があります。

これらのすべてのケースが私のアラームに影響しないように、私のアラームを設定する方法。

これはできません。アラームが実際にクリアされるケース(再起動と強制停止)はほとんどありません。そのような場合には、アラームがクリアされないようにすることはできません。

+0

ありがとう、完全で徹底的な答えのためのcommonsware! –

+0

ユーザーがアプリのデータを消去するとどうなりますか?私たちはレコードのトラックを失うことはありませんか? – Krishnaraj

+0

@Krishnaraj:はい。あなたのユーザーがそれをしないことを願っています。 – CommonsWare

2

@CommonsWareアラームが実際にクリアされるケースはほとんどありません(リブートと強制停止)。そのような場合には、アラームがクリアされないようにすることはできません。

しかし、私は両方を扱うことができると感じ:

を再起動します:意図アクション閉じる

フォースをandroid.intent.action.BOOT_COMPLETED:アプリはいくつかのサーバーと通信する場合に処理することができ、そこには、GCMを統合することができます殺された場合、最終的にあなたのアプリケーションを起動することができます。 onReceiveと同様に :

final Intent notificationIntent = new Intent(context, YourActivity.class); 
notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

アプリケーションを起動します。

私が間違っているかどうか教えてください。