2012-03-21 2 views
3

私のアプリはアラームタイマーを使用して2分ほどごとにサーバー上のアップデートを確認します。私はこれを使用して定期的なタイマーを作成します:私のアンドロイドのアラームはキャンセルされていて、私のものではありません

alarmIntent = new Intent(context, OnWakeUpReceiver.class); 
    PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 

    mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 120000, pIntent); 

多くの人にとって、これはうまくいきます。しかし、少数の人々は、アプリが突然それ自体の更新を停止すると報告しています。私はタイマーが存在するかどう見て簡単なチェックを入れ:アプリは、もはや何のタイマーがないことを示す、この戻りヌルを、更新されたときに

PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_NO_CREATE); 

と案の定、まだ存在しません。

私のアプリはアラームタイマーを制御していました(ネットワークに接続されていないときに電源を切ってから、もう一度オンにしたときなど)。たぶん私はそれをオフにして、それを元に戻さないと思った。だから私はアラームタイマーをキャンセルするすべての呼び出しを削除したバージョンを作成しました。だから私のアプリはもはやそのタイマーをキャンセルする手段がありません。しかし、わずか数日後にもう一度アラームタイマーは表示されなくなり、アプリは更新されません。

自分のシステムでこれを実行することができなかったか、誰かにそれを繰り返すための絶対的な方法が見つかっていませんでした。おそらくAndroidシステムがそれをキャンセルしていたのかどうかは疑問に思っていましたが(それは私のアプリが再び働くことを止めるでしょうが)、より多くの問題システムの1つでは、

タスク・キラーがアラーム・タイマーを殺すかどうかはわかりませんでしたが、私はSDK 8と思うとタスク・キラーがこれをやり直すことができず、ポスト・バージョン8また、タスクキラーを実行していないシステムにも根ざしていません。

私は、メインのアプリタイマーが更新を停止したかどうかを確認して確認するためだけに受信機を走らせる「ウォッチドッグ」アラームタイマーを作成しました。私が見つけたのは、そのタイマーもキャンセルされていたことです(これは、「最後に実行された」アップデートを与えず、メインアプリが停止したことに気付かなかったということです)。

この問題は私のためのアプリキラーです。誰でも何時でも試してデバッグする方法を提案できますか?何が起きていますか?システムによって何か他の方法でタイマーがキャンセルされたときに、システムによってログエントリが作成されましたか?私はそれがトレースなしで蒸発するだけであることが嫌いです。

+0

デバイスの電源を入れ直してもアラームが表示されますか? –

+0

私は決してチェックしませんでしたが、電話が起動するたびにアラームタイマーを作成しなければならないと仮定しました。私はそれを行うOnBoot受信機を持っています。 – Rob

+0

誰かがデータプランを外して、サーバーに接続できない場合や、正常に失敗して別のアラームを作成した場合、ワイヤレスでアプリがクラッシュする可能性がありますか? –

答えて

1

私は、これは完全な答えであると言うことはできませんが、これらの2つの変更は、一緒に取り消されたアラームの多くを停止しているように見える:

1)を呼び出すとは対照的に、私は、保留中の意図を取り、それをキャンセルしました何らかの理由でアラームをキャンセルしなければならなかったときに、アラームマネージャのcancel()を実行してください。時間の経過とともに、それがアラームマネージャーなどを混乱させるかどうかはわかりませんが、おそらく良くありませんでした。これでアラームマネージャーと保留中のインテントが取り消されました。

2)私のユーザーの1人が、クリアRAMにアクセスしたときにサービスを無効にする方法について説明しました。どうやら、いくつかの電話機には、タスクマネージャが付いているので、メモリ/ RAMをクリアできる素晴らしいボタンが付いています。ボタンは、それを押すといくつかのアプリケーションが動作を停止することを明らかにしています...そして、ユーザーはまだそれをマッシュします。私はどのくらい正確かはわかりませんが、これは私の警報をほとんど殺しているようです。だから私は、人々がそれをやめることをやめることに大きな注意を払い、その後は物事は本当に静かになった。厄介なのは、ユーザーが次の魔法のボタンを押すか、何かが本当に間違ってしまった場合に、次回にアラームが鳴ったときに私が本当に気づかないということです。

どちらにせよ、物事は今より良いです。

関連する問題