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

來源:互聯網
上載者:User

標籤: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之間通訊方式有哪些?

  • 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.