標籤:stand 直接 技術 for 屬性 csdn 使用者 receiver mic
一.定義軟體開啟的主activity
當使用者點開軟體時,系統會預設調用app中聲明為“launch”(或者“main”)的activity中的onCreate()方法。我們一般在AndroidManifest.xml中定義主activity。
<activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>
關於activity相關的面試題:
1.如果新Activity是透明主題時,舊Activity會不會走onStop
不會!舊Activity處於Paused狀態。
2.TaskAffinity 是什嗎?
每個activity都有taskAffinity屬性,這個屬性指出了它希望進入的Task。標識Activity任務棧名稱的屬性:TaskAffinity,預設為應用程式套件名。
3.Android Service與Activity之間通訊方式有哪些?
4.Activity啟動方式
am啟動一個activity :
adb shell am start com.example.fuchenxuan/.MainActivity
am發送一個廣播,使用action:
adb shell am broadcast -a magcomm.action.TOUCH_LETTER
5.如何擷取當前螢幕Activity?
使用ActivityLifecycleCallbacks,詳細。
6.Activity的四種啟動模式?
啟動模式有4種,分別為standard、singleTop、singleTask、singleInstance;
- standard:每次啟用Activity時(startActivity),都建立Activity執行個體,並放入任務棧;
- singleTop:如果某個Activity自己啟用自己,即任務棧棧頂就是該Activity,則不需要建立,其餘情況都要建立Activity執行個體;
- singleTask:如果要啟用的那個Activity在任務棧中存在該執行個體,則不需要建立,只需要把此Activity放入棧頂,並把該Activity以上的Activity執行個體都pop;
- singleInstance:如果應用1的任務棧中建立了MainActivity執行個體,如果應用2也要啟用MainActivity,則不需要建立,兩應用共用該Activity執行個體;
7.如何退出 Activity?如何安全退出已調用多個 Activity 的 Application?
退出單個activity:
- 通常情況使用者退出一個 Activity 只需按返回鍵,我們寫代碼想退出 activity 直接調用 finish()方法就行。
- 殺死該進程:killprocess(Process.mid)
- 終止正在啟動並執行虛擬機器:system.exit()
退出整個應用:
在需要結束應用時,發送一個特定的廣播,每個 Activity 收到廣播後,關閉 即可。
//給某個 activity 註冊接受接受廣播的意圖 registerReceiver(receiver, filter)
//如果過接受到的是 關閉 activity 的廣播 activity finish()掉
就調用 finish()方法 把當前的 在開啟新的 Activity 時使用 startActivityForResult,然後自己加標誌,在 onActivityResult 中處理,遞迴關閉。
- 通過 intent 的 flag 來實現 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)啟用一個新的 activity。 此時如果該任務棧中已經有該 Activity,那麼系統會把這個 Activity 上面的所有 Activity 幹掉。其實相當於給 Activity 配置的啟動模式為 SingleTop。
- 記錄開啟的 Activity:
每開啟一個 Activity,就記錄下來。在需要退出時,關閉每一個 Activity
附錄: activity生命週期:
Android 四大組件------Activity