1. 程式人生 > >Android開發之非Activity型別的Context啟動一個目標Activity

Android開發之非Activity型別的Context啟動一個目標Activity

我們在日常開發中有時會遇到啟動一個目標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);