簡體   English   中英

如何從服務啟動活動?

[英]How to start an Activity from a Service?

是否可以從服務啟動活動? 如果是的話,我們怎樣才能做到這一點?

android.app.Service是后代android.app.Context所以你可以使用startActivity直接。 但是,由於您在任何活動之外啟動此操作,因此需要在intent上設置FLAG_ACTIVITY_NEW_TASK標志。

例如:

Intent i = new Intent();
i.setClass(this, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

this是你的服務。

即使框架允許您從服務啟動活動,它也可能不是一個合適的解決方案。 原因是服務任務可能或可能不是服務希望與用戶交互時用戶的焦點。 中斷用戶當前正在做的事情被認為是糟糕的設計形式,尤其是應該在后台運行的東西。

因此,您應該考慮使用Notification with Notification Service,當用戶決定調查時,它帶有PendingIntent以啟動所需的Activity。 把它想象為延遲滿足。

我從服務啟動活動時遇到問題,這是由於缺少FLAG_ACTIVITY_NEW_TASK意圖標志。

這肯定會解決你的問題

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM