直接context.startActivity(intent),程序異常退出。
報(bào)錯(cuò)如下: Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? Context中有一個(gè)startActivity方法,Activity繼承自Context,重載了startActivity方法。如果使用 Activity的startActivity方法,不會(huì)有任何限制,而如果使用Context的startActivity方法的話,就需要開(kāi)啟一個(gè)新 的task,遇到上面那個(gè)異常的,都是因?yàn)槭褂昧薈ontext的startActivity方法。
解決辦法是,加一個(gè)flag。 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
以下為Context源碼中的startActivity:
public abstract void startActivity(Intent intent); 以上解釋了為什么使用Context的startActivity方法(比如在Service中或者BroadcastReceiver中啟動(dòng)Activity)為什么需要添加flag:FLAG_ACTIVITY_NEW_TASK
|