2016-04-01 21 views
0

私はこのタイプの質問が既に尋ねられているが、どれも解決策がないことを知っています。 私は1時間以上はうまく動作しますが、いつかは何も受信しないサービスに登録した放送受信機を持っています。受信機をトリガーするサービスについては、常に稼動しています。放送受信機はいつか後で何も受信しません

IntentFilter filter = new IntentFilter(); 
    filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); 
    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    filter.addAction(Intent.ACTION_SCREEN_ON); 
    this.mBroadcastReceiver = new MyBroadcastReceiver(); 
    registerReceiver(this.mBroadcastReceiver, filter); 

お願いします。

+1

あなたのアプリがその間に殺されることがあるかもしれません。 –

+0

あなたの言ったことを理解できませんでした。削除してください。 – Ruag

+1

長時間アプリをアイドル状態にしておくと、ガベージコレクションの候補になります。そしてあなたの携帯電話がメモリを必要とするときGCが実行され、Androidシステムはアイドル状態であり、長期間アクティブではないため、アプリケーションを終了させます。今あなたのアプリがもはや実行されていないとき、あなたのレシーバーも登録されていないので、それらはもはや働かない。 –

答えて

1

私は同じ問題を最終的に解決しました。 インテントブロードキャストの受信時にアクティビティを開始している可能性があり、使用する可能性のあるアクティビティの意図がgetApplicationContext()なので、アプリケーションがまったく実行されていないときにgetApplicationContext()がnullを返し、 onReceiveメソッドで受け取ったのと同じコンテキストを使用します。 私はそれがあなたを助けることを願っています。

関連する問題