1. 程式人生 > >使用ApplicationContext啟動standard模式的Activity報錯原因解析

使用ApplicationContext啟動standard模式的Activity報錯原因解析

關於這個錯誤如何處理網上很多帖子都給出了答案,所以這裡不再提及,但是出錯的原因解釋則很少提及,因此mark一下,以下筆者簡單的解釋一下:

錯誤提示日誌:
02-10 13:26:11.048: ERROR/AndroidRuntime(17173): 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?

原因:
standard模式的Activity每次被啟動時不管任務棧有沒有該Activity例項存在,都會建立一個該Activity例項,該例項被放在啟動這個standard模式Activity的那個Activity例項所在的任務棧裡(即誰啟動它,它就和誰放在一起(放在同一個任務棧)),這裡啟動這個standard模式的Activity的不是Activity,而是ApplicationContext,它不是Activity不會放在任務棧,所以當ApplicationContext來啟動Standard模式的Activity的時候,這個standard Activity會發現自己找不到任務棧來安置自己,因此報錯。