我有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
我明白了,我會試試看,謝謝。 –