如果你有Service在跑,但是没有处于resume的activity,这时候如果你想启动一个Activty,比如提醒用户升级应用,在后台Service中是可以直接启动Activity的
如果用的context不是Activity的context,会报错:
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK
给Intent加上这个flag就可以了:
public int onStartCommand(Intent intent, int flags, int startId) {
Intent intentUpdate = new Intent();
intentUpdate.setClassName(HugeDataApp.getContext(),
SpeedometerApp.class.getName());
intentUpdate .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentUpdate.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
HugeDataApp.getContext().startActivity(intentUpdate);
}当然这种方式用户体验不好,很少看到有应用这样干
本文详细介绍了如何在后台Service中直接启动Activity,包括使用特定的Intent flag来避免错误提示,以及这种方式可能带来的用户体验问题。文章还提供了一个示例代码,展示了如何在Service中启动Activity并进行清理操作。
6402

被折叠的 条评论
为什么被折叠?



