Android系统。无法清除或替换额外内容

时间:2013-12-24 20:05:06

标签: android android-intent clear extras

我通知的午餐活动。

Intent notificationIntent = new Intent(context, MainActivity.class); 
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
notificationIntent.putExtra(GCM_EXTRA_ID, id);
PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(context, title, message, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_SOUND;
notificationManager.notify(0, notification); 

如果活动被破坏,意图创建新活动并调用oncreate活动此代码

Bundle extras = getIntent().getExtras();

if(extras != null){
    if(extras.containsKey(GCMIntentService.GCM_EXTRA_ID))
    {
        int id = extras.getInt(GCMIntentService.GCM_EXTRA_ID);
        Toast.makeText(this, "GCM_EXTRA_ID ACTIVITY ON CREATE:" + Integer.toString(id) , Toast.LENGTH_LONG).show();
        dbClassItem = new DBClass(this);
        db =  dbClassItem.getWritableDatabase();
        DBClass.setLocateValue(db, id);
        db.close();
        getIntent().putExtra(GCMIntentService.GCM_EXTRA_ID, 0);
    }
}

如果我通过后退按钮关闭活动并再次启动活动应用程序仍然看到,该意图有额外的密钥GCMIntentService.GCM_EXTRA_ID (这是一个公共静态字符串)

如何在下次应用启动时清除或替换此额外内容。 getIntent().removeExtra()getIntent().getExtras().clear(),getIntent().putExtra(GCMIntentService.GCM_EXTRA_ID, 0)不起作用。我能做什么 ?活动有android:launchMode ="singleTop"密钥。

2 个答案:

答案 0 :(得分:1)

使用onNewIntent而不是在Activity中使用onCrete来解决此问题。

答案 1 :(得分:0)

你可以这样做

       notificationIntent.putExtra(GCM_EXTRA_ID, null);