日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android常见面试题(一)

發布時間:2025/5/22 Android 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android常见面试题(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ANDROID(一)

Activity

1.什么是Activity? 請描述一下生命周期

Activity:

一個Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務,例如撥號、拍照、發送email、看地圖。每一個activity被給予一個窗口,在上面可以繪制用戶接口。窗口通常充滿屏幕,但也可以小于屏幕而浮于其它窗口之上

一個程序一般由多個Activity組成,各activities之間關系很松散,它們之間沒有直接的關聯。必須有一個activity被指定為Main activity,它是程序啟動時首先顯示的界面。每個activity都可以隨意啟動其它的activity。每當一個activity被啟動,則前一個activity就被停止。一個程序中的所有啟動的activity都被放在一個棧中,所以被停止的activity并沒有銷毀,而在存于棧中。新啟動的activity先被存放于棧中,然后獲得輸入焦點。在當前活動的activity上點返回鍵,它被從棧中取出,然后銷毀,然后上一個activity被恢復。當一個activity因為新的activity啟動而被停止時,它會收到狀態變化的通知,這樣的變化有多個,每個都會引起系統調用一個相應的回調方法以通知activity,這些回調方法被統稱為“生命周期回調方法”。這些回調方法分別在Activity被創建、停止、恢復、銷毀時被調用。

生命周期:

在 android 中,Activity 擁有四種基本狀態:

  • Active/Runing一個新 Activity 啟動入棧后,它在屏幕最前端,處于棧的最頂端,此時它處于可見并可和用戶交互的激活狀態。
  • Paused?當 Activity 被另一個透明或者 Dialog 樣式的 Activity 覆蓋時的狀態。此時它依然與窗口管理器保持連接,系統繼續維護其內部狀態,所以它仍然可見,但它已經失去了焦點故不可與用戶交互。
  • Stoped?當 Activity 被另外一個 Activity 覆蓋、失去焦點并不可見時處于?Stoped狀態。
  • Killed?Activity 被系統殺死回收或者沒有被啟動時處于?Killed狀態。
  • 當一個 Activity 實例被創建、銷毀或者啟動另外一個 Activity 時,它在這四種狀態之間進行轉換,這種轉換的發生依賴于用戶程序的動作。下圖說明了 Activity 在不同狀態間轉換的時機和條件:

    圖 1. Activity 的狀態轉換

  • protected void onStart()該方法在 onCreate() 方法之后被調用,或者在 Activity 從 Stop 狀態轉換為 Active 狀態時被調用。
  • protected void onResume()在 Activity 從 Pause 狀態轉換到 Active 狀態時被調用。
  • protected void onResume()在 Activity 從 Active 狀態轉換到 Pause 狀態時被調用。
  • protected void onStop()在 Activity 從 Active 狀態轉換到 Stop 狀態時被調用。一般我們在這里保存 Activity 的狀態信息。
  • protected void onDestroy()在 Active 被結束時調用,它是被結束時調用的最后一個方法,在這里一般做些釋放資源,清理內存等工作。
  • 圖 3. 這些方法的調用時機

    ?

    共有七個周期函數:?
    void onCreate(Bundle savedInstanceState)?
    void onStart()?
    void onRestart()?
    void onResume()?
    void onPause()?
    void onStop()?
    void onDestroy()?

    在Activity顯示的過程中會依次調用OnCreate、onStart和OnResume,在Activity銷毀的過程中,會依次調用onPause、onStop和onDestroy.在執行onStop過程中Activity重新獲得了焦點,系統會調用

    onRestart方法,之后調用onStart和onResume方法

    1.完整生命周期:???? 即一個activity從出現到消失,對應的周期方法是從onCreate到onDestroy?
    2.可見生命周期:???? 從onStart()到onStop()方法,在這個周期中,用戶可以看見Activity,但不一定能夠與之交互,這兩個方法可以隨著狀態的變化被執行多次。?
    3.前景生命周期:????? 從onResume()到onPause()方法,在這個周期中,Activity處在其它Activity之前,即在Activity棧的最頂端,負責與用戶進行交互,伴隨著狀態的變化,這兩個方法可以被執行多次

    ?

    2.Activity調用的幾種方法

    顯示啟動Activity

      顯示啟動activity

      Intent intent = new Intent(this,MyActivity.class);

      startActivity(intent);

      啟動一個activity并獲取結果

      startActivityForResult();

      (回來時調用onActivityResult())

    隱式啟動Activity

      指定Activity Action:

      例如,你想讓用戶發送一個電子郵件,你可以創建以下的Intent:

      Intent intent = new Intent(Intent.ACTION_SEND);

      intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);

      startActivity(intent);

    關閉Activity

    ? ? ?Activity可以內部調用finish()方法關閉它自己,也可以調用finishActivity()方法關閉其它的activity、

    3.在Activity之間如何傳遞數據

    四種方法:

    Intent對象

      例如:Intent intent = new Intent(this,MyActivity.class);

         intent.putExtra("intent_int",300);

         startActivity(intent);

      獲取:

         int demo = getIntent().getExtras().getInt("intent_int");

    靜態變量

      將類的成員定義成public static

    剪切板

      不過只能傳文本數據以及Intent對象支持的數據

    全局對象

      可以為應用程序定義一個全局變量,繼承application

    4.兩個Activity之間跳轉時必然會執行的是哪幾個方法

    onCreate():在activity生命周期開始時調用

    onRestoreInstanceState():用來恢復UI狀態

    onRestart():當activity重新啟動時調用

    onStart():當activity對用戶即將可見時調用

    onResume():當activity與用戶交互時,繪制界面

    onSaveInstanceState():當activity即將移除棧頂保留UI狀態時被調用

    onPause():暫停當前活動的activity,提交持久數據的改變,停止動畫和其他占用CPu資源的東西,由于下一個activity在這個方法返回之前不會resume,所以這個方法的代碼執行要快

    onStop():activity不再可見時調用

    onDestroy():在activity銷毀棧時被調用的最后一個方法

    5.橫豎屏幕切換時候activity的生命周期

    ①不設置activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,且豎屏時會執行兩次

    ②設置activity的android:configChanges=”orientation"時,切屏還是會調用各個生命周期,切橫屏,豎屏時只會執行一次

    ③設置activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法

    6.你后臺的Activity被系統回收怎么辦?

    系統會幫我們記錄下回收之前Activity的狀態,再次調用被回收的Activity就要重新調用onCreate()方法,不同于直接啟動的是這回onCreate()里面帶上參數savedInstanceState,savedInstanceState是一個Bundle對象,基本上可以把它理解為系統幫你維護的一個map對象,使用它可以恢復到回收前的狀態

    7.如何將一個activity設置為窗口的樣式

    ①在你的style.xml文件中可以新建一如下的類似Dialog的style:

    <style name="Theme.FloatActivity" parent="android:style/Theme.Dialog></style>

    ②在AndroidManifest.xml中在你需要顯示為窗口的activity中添加如下屬性:

    android:theme="@style/Theme.FloatActivity"即可

    也可以直接添加對應需要展示為Dialog style的activity的android:theme屬性值為:android:theme="@android:style/Theme.Dialog"

    ?

    轉載于:https://www.cnblogs.com/daimingming/p/3352425.html

    總結

    以上是生活随笔為你收集整理的Android常见面试题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。