1. 程式人生 > >Android 四大組件------Activity

Android 四大組件------Activity

sdn 系統 detail 實例 fec single 運行 clas 附錄

一.定義軟件打開的主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之間通信方式有哪些?

  • Binder
  • 廣播
  • EventBus

4.Activity啟動方式

  • Intent
  • adb shell am指令

    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