如果你有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);
}
当然这种方式用户体验不好,很少看到有应用这样干