这是我用来为我的通知创建PendingIntent的代码。
Intent notificationIntent = new Intent(context, Activity1.class);
PendingIntent myIntent = PendingIntent.getActivity(context, 0,notificationIntent, 0);
此PendingIntent在单击通知时启动Activity1。 如何才能简单地重新打开应用并转到最新的活动(就像点击启动器图标一样),而不是在点击通知时启动新的活动?
答案 0 :(得分:2)
Activity1就是一个例子。我在应用程序中有多个Activity。我只是想重新打开应用程序并转到最近的活动
注意:对我来说这看起来像是错误的设计,因为通知应允许用户输入与通知相关的活动。
从技术上讲,您可以创建重定向活动,并且您的通知意图应在点按时启动。在onCreate()
中,您可以检查要将用户重定向到哪个活动(您可以在SharedPreferences中保留此信息,并且每个活动都会在onCreate()
中写入此信息(如果您有,则在基类中创建该信息)然后在重定向器中,您可以定期调用startActivity()
进行上一次活动并致电finish()
以结束您的重定向器。此外,您的重定向器活动不需要任何布局,因此添加
android:theme="@android:style/Theme.NoDisplay"
到它的Manifest条目(当然你也不需要调用setContentView()
)
答案 1 :(得分:0)
通过将活动的launchMode更改为singleTask来创建Activity1作为单一任务活动......
答案 2 :(得分:0)
将您的活动设置为launchMode="singleTop"
中的Manifest.xml
,然后使用此代码代替您上面使用的代码重新打开活动代码:
Title = "YourAppName";
Text = "open";
notificationIntent = new Intent(this, Activity1.class);
cIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(getApplicationContext(), Title, Text, cIntent);
答案 3 :(得分:-2)
您可以在清单文件中更改挂起意图所针对的活动的android:launchMode。
通常,您可以使用singleTop,当目标活动已经位于任务堆栈之上时,它将重用相同的实例(即:在您离开应用程序之前显示活动)。
如果您只想保留活动的单个实例,也可以考虑使用SingleTask和SingleInstance。