是否可以從服務啓動活動?如果是的話,我們該如何實現呢?如何從服務啓動活動?
回答
android.app.Service
是android.app.Context
的後裔,因此您可以直接使用startActivity
。但是,由於您在任何活動之外開始此活動,因此您需要在意圖上設置FLAG_ACTIVITY_NEW_TASK
標誌。
例如:
Intent i = new Intent();
i.setClass(this, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
其中this
爲您服務。
我從服務啓動活動時出現問題,這是由於缺少FLAG_ACTIVITY_NEW_TASK意向標誌。
不知道,但我可以開始活動直接從服務沒有任何標誌,它工作正常 – 2017-11-20 07:18:51
這無疑將解決你的問題
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName cn = new ComponentName(this, TaxiPlexer.class);
intent.setComponent(cn);
startActivity(intent);
你好 我有問題當應用程序從服務(FCM) 關閉時開始活動以上代碼僅在應用程序已打開時起作用。 請幫我打開應用程序從後臺運行服務 – 2016-10-20 09:59:25
即使框架允許你從服務開始的活動,它可能不是一個妥善的解決辦法。原因在於服務任務可能是也可能不是用戶在服務希望與用戶交互時的焦點。中斷用戶目前正在做的事情被認爲是糟糕的設計形式,特別是在應該在後臺運行的東西。
因此,您應該考慮使用帶通知服務的通知,該通知服務攜帶PendingIntent以便在用戶決定是否需要調查時啓動所需的活動。把它想成延遲滿足。
- 1. 如何從Android服務啓動活動
- 2. 如何從服務中啓動活動?
- 3. 從服務啓動活動
- 4. 如何在後臺啓動服務並從該服務啓動一項活動?
- 5. 無法從FCM服務啓動活動
- 6. 從Android服務啓動鈦「活動」
- 7. 無法從服務啓動活動
- 8. 從後臺服務啓動Android活動
- 9. Android:服務啓動活動
- 10. 如何在重新啓動後通過服務啓動活動
- 11. 在活動開啓時啓動服務
- 12. Java Android:如何從Web服務器啓動活動?
- 13. 從服務啓動對話活動導致'MainActivity'也啓動
- 14. 從應用程序啓動而不是活動啓動服務
- 15. 啓動可能從啓動時運行的服務活動
- 16. 服務如何與其活動通信?服務如何調用啓動該服務的活動中的方法?
- 17. 從服務啓動服務
- 18. 從服務啓動服務
- 19. 啓動在設備啓動時啓動活動的服務
- 20. 活動從服務
- 21. 如何從其他活動啓動啓動器活動?
- 22. 如何從以外的活動的活動訪問該服務的實例啓動服務
- 23. 如何從一項活動啓動一項android服務並在另一項活動中停止服務?
- 24. 自動啓動AppEngine靈活服務器
- 25. 活動將不會啓動服務
- 26. 通過服務重新啓動活動
- 27. 啓動服務使用活動
- 28. 在ActivityInstrumentationTestCase2活動之前啓動服務
- 29. 如何從服務帶上活動
- 30. 如何從活動調用服務?
這很好,但每次Activiyt都會像新開始的活動一樣開始。這種呼叫只能工作一次。或者我想念什麼!? – uzay95 2011-06-20 16:45:39
@MarcinGil你知道這是故意的行爲嗎?換句話說,你知道谷歌工程師是否設計了服務,以便能夠在沒有用戶交互的情況下打開一個活動,並且該過程總是流暢? – MikeIsrael 2012-05-01 06:44:24
@MikeIsrael我相信是的。試想一下,在後臺運行的系統服務無法在來電時顯示接受/拒絕活動。既然你是這個服務的開發者,你知道你想要展示什麼活動,這一切都取決於你。您可以使用從您的應用程序啓動的服務來執行一些操作,例如。在某些觸發器上激活應用程序;如通知欄中的更新狀態,並點擊啓動應用程序。 – 2012-05-01 12:04:59