啟動Activity的形式

2022-07-14 23:39:30 字數 806 閱讀 1698

問:為什麼service裡面startactivity拋異常,activity不會?

no1:

啟動activity有兩種形式:

1)直接呼叫context類的startactivity方法;這種方式啟動的activity沒有activity棧,因此不能以standard方式啟動,必須加上flag_activity_new_task這個flag,服務就是通過context呼叫

2)呼叫被activtiy類過載過的startactivity方法,通常在我們的activity中直接呼叫這個方法就是這種形式

no2:

no3:

context.startactivity-->

contextimpl.startactivity-->

instrumentation.execstartactivity-->

activitymanagernative.getdeault().startactivity-->

其中contextimpl中判斷是否為flag_activity_new_task標記

no4:

activity.startactivity-->

activity.startactivityforresult-->

instrumentation.execstartactivity-->

no5:

簡單成一句話,就是系統要知道被啟動的activtiy應該放在那個task中

視窗形式的Activity

視窗形式的activity看起來是這樣 其實,這與普通的activity 是一樣的,只不過在 androidmanifest.xml 中指定了 activity 的themestyle 為dialog.theme。activity 仍然是這樣 import android.content.inten...

Activity的啟動模式

關於activity的啟動模式,有四種 1.standard 預設的啟動模式,每次都建立新的例項 2.singletop 在棧頂就重用 被重用了會呼叫onnewintent intent intent 否則建立新的例項 3.singletask 在棧中就重用 被重用了會呼叫onnewintent i...

Activity的啟動模式

對於activity的四種啟動模式大家應該都很熟悉 面試中也經常會被問過的問題。1 standard 標準模式 2 singletop 棧頂復用模式 3 singletask 棧內復用模式 4 singleinstance 單例項模式 設定activity的啟動模式,只需要在androidmanif...