0

私は Parse プッシュ通知を使用しており、これらのメソッドを使用して、メッセージの内容をユーザーに警告しています。AlertDialog を一度表示し、その後そのデータをインテントから削除して、アプリが強制終了されたのではなく単に一時停止された場合に再度ポップアップしないようにするにはどうすればよいですか?

onCreate() の最後に

handlePushIntent(getIntent());

onNewIntent() をオーバーライドしました

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handlePushIntent(intent);
}

そして私の方法:

 private void handlePushIntent(Intent intent) {
    Bundle extras = intent.getExtras();
    if (extras == null || extras.isEmpty())
        return;
    if (extras.containsKey("com.parse.Data")) {
        try {
            JSONObject data = new JSONObject(extras.get("com.parse.Data")
                    .toString());
            String alert = data.getString("alert");
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage(alert);
            builder.setNeutralButton(android.R.string.ok, null);
            builder.show();
        } catch (Exception e) {
            Log.d("VNL", "Push Error", e);
        }
    }
}
4

2 に答える 2

1

IMOフレームワークによってインテントオブジェクトが自動的にバックスタックに追加されるという事実は、一時停止/再開に関する「状態」の問題に貢献しています...

メッセージループとハンドラーを使用して、ハンドラー/メッセージループを使用し、プッシュせずにメッセージを一度消費し、オブジェクト (インテントなど) をバック/スタック。

ここでの「可能な限り簡単な例」の回答は、バック/スタックなしでアラートを配置できるインラインハンドラー/ランナブルを示しています

于 2013-06-19T13:21:20.127 に答える
0

私は別のアプローチを使用します。プッシュ通知を表示するために、EventBus を使用し、通知を EventBus にスティッキー イベントとして投稿します。メッセージを表示するとすぐに、EventBus からイベントを削除します。

StickyEventsの詳細については、http://greenrobot.org/eventbus/documentation/configuration/sticky-events/ を参照してください。

于 2016-05-18T07:51:30.313 に答える