我在帶有圖標的應用程序上有一個通用菜單。點擊一個圖標將開始一個活動。有沒有辦法知道一個活動是否已經在運行,並防止它多次(或從多個條目)啓動?我也可以將處於onPause狀態的活動帶到前面嗎?防止多次打開活動
防止多次打開活動
回答
使用此:
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
同時開始Activity
。
如果傳遞給Context.startActivity()的意圖設置,這個標誌將 導致啓動的活動被帶到其任務的 歷史堆棧的前面,如果它已經是運行。
在清單文件的活動宣言,添加標籤android:launchMode="singleInstance"
從startActivityForResult的文檔中,如果您正在啓動的活動使用singleTask啓動模式,它將不會在您的任務中運行,因此您將立即收到取消結果。 – 2013-08-03 06:27:42
我有多個入口點,這對我很有用 – 2015-07-09 11:44:21
事實上,我不是「singleInstance」的粉絲,因爲它會導致活動在單獨的窗口中運行,就好像它是一個單獨的應用程序,用戶打開應用程序視圖時的用戶體驗。 – 2017-04-09 08:08:25
創建活動,你不想開始多次像
Class ExampleA extends Activity {
public static Activity classAinstance = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
classAinstance = this;
}
}
現在在以往任何時候ü要的實例crosscheck我的意思是防止它啓動多次,像這樣檢查
if(ExampleA.classAinstance == null) {
"Then only start your activity"
}
請注意,這樣可以防止垃圾收集活動。此外,如果Activity是從其他不能訪問(甚至不知道)靜態活動引用的其他組件(例如,另一個應用程序)啓動的,則這將無濟於事。 – lxgr 2015-06-08 15:54:51
Add給你的Activity
定義Androidmanifest.xml
...
android:launchMode = "singleInstance"
只需使用
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
添加此
@Override
protected void onDestroy() {
super.onDestroy();
finish();
}
或
launchmode到singleTask /單模
或
總是通過清除棧
請給你的答案添加一些解釋。 – ItamarG3 2017-05-19 12:21:48
**來自複審隊列:**我可以請求您在請求答案時添加更多的上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – 2017-05-19 17:46:37
我把它做以下工作完全打開新的活動。 在(甚至是從其他應用程序)
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME);
//the previous line can be replaced by the normal Intent that has the activity name Intent launchIntent = new Intent(ActivityA.this, ActivityB.class);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(launchIntent);
,並在接收器的工作的清單呼叫者活動或服務(我想阻止開放兩次)
<activity android:name=".MainActivity"
android:launchMode="singleTask"
>
- 1. 如何防止窗體多次打開
- 2. 防止多次打開窗口
- 3. 防止子窗口多次打開
- 4. 防止每次打開活動時都必須加載TextViews?
- 5. 如何防止在Android中打開活動時打開鍵盤?
- 6. 通知打開活動,按回按鈕,防止打開回棧活動?
- 7. 防止主要活動在其他活動打開時暫停?
- 8. 多次打開同一活動
- 9. 防止Flyout動態打開
- 10. 如何防止用戶每次多次打開同一頁面
- 11. 防止從2 NotfiyIcons顯示當程序一次打開多次
- 12. 活動打開兩次
- 13. 上次打開的活動
- 14. 停止NSPopover多次打開
- 15. 如何防止打開文件兩次?
- 16. 防止多次啓動相同的活動
- 17. 防止多次撥打網絡服務
- 18. 如何防止javascript一次打開太多文件?
- 19. 如何防止用戶一次打開多個表單?
- 20. 如何防止在c#中多次打開窗體
- 21. 如何防止DataGridView雙擊多次打開窗體?
- 22. 防止活動壓
- 23. 防止多個JFrame窗口打開
- 24. 如何防止多次初始化活動
- 25. 打開文件時防止應用程序/活動的多個實例
- 26. 防止活動的多重實例化
- 27. 防止jquery移動面板打開?
- 28. 防止後臺滾動打開燈箱
- 29. 防止jQuery timepicker插件自動打開
- 30. 添加小部件時打開活動(不止一次)
我沒有做過Android開發在一段時間內,但我敢肯定,Android會調出你的'Activity'的現有實例,而不是啓動一個新的實例。 – 2012-01-18 07:16:23