私は話すボタンがあるウィジェットを持っています。ウィジェットの発言ボタンを押すと、私はMainActivityを開きます。このMainActivityは、マニフェストで単一のトップと宣言されています。保留中のインテントエクストラは、アクティビティが再作成されても消去されません。
後話すウィジェットボタン
Intent speakIntent = new Intent(context, MainActivity.class);
speakIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
speakIntent.putExtra(Constants.IS_LAUNCH_SPEAK, true);
speakIntent.setAction(ACTION_WIDGET_SPEAK_SCREEN);
PendingIntent configSpeakPendingIntent = PendingIntent.getActivity(
context, Utils.generateRandom(), speakIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(
R.id.btn_speak, configSpeakPendingIntent);
上のコードでは、これは、Googleがダイアログ話す開き、正常に動作しています。
しかし、私は、このダイアログに戻って押して、もう一度アプリを再開するのボタンを背面押してアプリを最小化する場合には、SO意図エキストラにも活動かかわらクリア取得されていないアプリはウィジェット
から開始されていなくても、ダイアログを話す示し私もアプリの再開で呼び出さなっているremoveExtraを使用して余分をクリアするが、活動はOnNewIntentが呼び出されたりないけどOnNewIntent OnCreate関数と呼ば取得されていない取得された場合、私がチェックマニフェストでsingletop起動モードを持っているので、これはまた
が動作していない試さdestoyedされます
インテントeウィジェットイベントから呼び出すと、アクティビティが破棄され、removeExtraが機能していないのに、xtrasが明確にならない
これを修正する方法。
次の通知を通じて活動を開くときに起こっ同じことが、コード
Intent intent = new Intent();
intent.putExtra(Constants.SOME_VALUE, value);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, Utils.generateRandom() /* Request code */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
また、FLAG_UPDATE_CURRENT – kimchibooty
と組み合わせてPendingIntent.FLAG_ONE_SHOTを使用してみてください。PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT ワンショットフラグは、特定の保留中のインテントが一度しか使用されないことを確認します。 – kimchibooty
も試行されました。 – apk