2016-10-01 11 views
0

アラームがアクティブになったときにアクティブになるサービスがあります。 IntentServiceを拡張し、そのサービスでMainActivityにメッセージを送信する必要があります。このメッセージを受け取ったMainActivityは、次に必要な作業を行います。MainActivityが終了したときにLocalBroadcastManagerを使用するAndroid

LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 

MainActivityが現在アクティブ(表示中)の場合は正常です。 MainActivityが現在アクティブでない場合しかし、私はそれを使用して作成した:MainActivityが現在アクティブ(表示)である

PendingIntent mPendingIntent = PendingIntent.getActivity(this, 0, 
       new Intent(this, MainActivity.class), PendingIntent.FLAG_ONE_SHOT); 
     mPendingIntent.send(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); 

場合、メッセージはそれに達します。しかし、PendingIntentを使用してMainActivityを再作成する必要がある場合、LocalBroadcastManager経由で送信されるメッセージはMainActivityに到達しません。もし私が例えば寝るなら。 MainActivityを再作成する必要があるメッセージを送信する前に、メッセージはMainActivityに到達します。

これは理解できますが、アプリケーションが意図したとおりに動作することを保証するフェールセーフな方法を使用することをお勧めします。

MainActivityがメッセージを受信したことを保証するには、メッセージが受信されたことを確認するためにMainActivityからサービスにメッセージを送信する必要がありますか?

これを処理するより良い方法はありますか?

答えて

0

これを処理するには良い方法はありますか?

アクティビティが既に存在する場合にのみLocalBroadcastManagerを使用してください。アクティビティを開始する必要がある場合は、アクティビティの開始に使用するIntentに、ブロードキャストで送信した情報を含めます。アクティビティは、その情報をonCreate()で探して使用できます。それ以外の場合は、正常に動作します。

関連する問題