Android開發之非Activity型別的Context啟動一個目標Activity
阿新 • • 發佈:2019-01-25
我們在日常開發中有時會遇到啟動一個目標Activity的時候,會利用一個非Activity型別的Context去啟動。
Intent intent = new Intent(context,TargetActivity.class);
context.startActivity(intent);
但是這樣直接去啟動一個目標Activity是不可以的。常常會報如下異常:
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?
上面的這個異常的意思是:啟動一個目標Activity的context是非Activity型別,如果想要正確啟動目標Activity需要設定TAG Task,即FLAG_ACTIVITY_NEW_TASK。其實,意思是,如果我們想要啟動一個Activity,啟動它的context必須要有一個任務棧。
所以正確的做法是:
Intent intent = new Intent(context,TargetActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);