我正在尝试以下代码进行通知,因此如果活动已经打开,它将刷新活动,否则会打开一个新活动。但是,当活动已经开放时,我不希望它开启另一项活动。
Intent startIntent = new Intent(getApplicationContext(),Myplanshow.class);
startIntent.putExtra("table_name", table_name);
startIntent.putExtra("changed", changed);
startIntent.putExtra("plannumber", plannumber);
startIntent.putExtra("scrollposition", placeposition);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, 101, startIntent, PendingIntent.FLAG_UPDATE_CURRENT);
它打开但后退按钮不起作用。它认为当前正在运行的应用程序已关闭,仅创建此活动。
答案 0 :(得分:1)
将 Myplanshow.activity 的 launchMode 声明为应用程序的 AndroidManifest.xml 文件中的 singleTop 。
工作:如果Myplanshow.activity的实例出现在活动任务堆栈的顶部,则意图将在其 onNewIntent()方法中传递给它,而不是创建新的实例活动。这是您可以执行操作的方法。 否则,如果堆栈中没有活动实例,它将创建活动的新实例并传递意图包。
使用上述方法不需要添加活动标志 - NEW_TASK 和 CLEAR_TASK 。
在继续操作之前,请查看官方文档。 https://developer.android.com/guide/topics/manifest/activity-element.html
希望这会有所帮助。