即使重新创建活动,也不会清除待处理的意图附加内容

时间:2016-10-19 19:13:36

标签: android android-intent android-widget android-pendingintent android-bundle

我有小部件,我有说话按钮。在按小部件上的发言按钮时,我打开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);

这会打开Goog​​le Talk对话框并正常工作。

但是如果我按下这个对话框并通过再次按下恢复应用程序上的后退按钮来最小化应用程序它会显示说话对话框,即使应用程序未从小部件启动

即使活动失败,SO意图附加功能也没有被清除我还试图通过使用removeExtra来清除额外内容,但这也无法正常工作

由于活动在清单中有单片机启动模式,我检查OnNewIntent是否被调用但是OnNewIntent没有被调用oncreate被调用恢复app

虽然活动已经失败并且removeExtra无法正常工作,但是当从widget事件调用时,Intent extras并没有变得清晰

如何解决此问题。

通过以下通知打开活动时发生同样的事情是代码

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);

1 个答案:

答案 0 :(得分:0)

在放置常量后尝试此代码

callBack.getActivity().clearLaunchIntent();

从您的活动中调用clearLaunchIntent()

public void clearLaunchIntent() { this.lastLaunchIntent = null; }

希望这会有所帮助