我有2个活动LoginActivity(singleTask)和MainActivity(singleTop)。该应用程序的入口点是登录活动。它检查用户凭证是否可用,然后开始主要活动。之后,LoginActivity调用完成。这样我就可以防止用户重新登录。Android意图重新启动应用程序
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
因此,LoginActivity从背面堆栈清除。不过,我刚刚发现调用完成的缺点:
当用户点击一个通知我要开始LoginActivity:
Intent intent = new Intent(this, LoginActivity.class);
mBuilder.setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
但LoginActivity不在堆栈上了(它结束了),所以android会启动一个新的实例。所以碰巧有整个应用程序的两个实例。历史记录:
(1) Login -> Main
(2) Main -> (Click on notification) -> Login -> Main
(3) Main -> Main -> (go back)
(4) Main
由于LoginActivity是我的应用程序的入口点,我无法将通知单击发送到MainActivity。相反,我希望应用程序完全重新启动。这可能吗?像:
(2) Main -> (Click on notification) -> Login -> Main
(3) Main
可悲的是我不能通过设计来做到这一点。 MainActivity使用TabLayout,我想保持我的应用程序模块化并防止将登录逻辑放入主要活动中。 –
啊,我不是说把登录逻辑放到MainActivity中。在清单中,首先启动MainActivity,如果用户未登录,则重定向到LoginActivity。 – Ozgur
我明白了,我会试试看,谢谢。 –