Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android編程入門 >> Android中的一些基礎知識(二)

Android中的一些基礎知識(二)

編輯:Android編程入門

這幾天在回顧Android的基礎知識,就把一些常見的知識點整理一下,以後忘了也可以翻出來看一看。


  • 簡單介紹一下Activity的生命周期
    在API文檔中對生命周期回調的函數描述的很詳細,這裡我只是翻譯了一下。
    • onCreate:當Activity第一次被創建的時候調運。應該在這個回調函數中做所有的初始化操作,比如:創建View,給lists綁定數據等。在這個函數執行完後,通常會調運onStart方法。Always followed by onStart()(這句就不用翻譯了吧)
    • onRestart:當Activity被stop後,有重新啟動的時候調運。Always followed by onStart()(這句就不用翻譯了吧)
    • onStart:當Activity對用戶可見之前調運。當Activity要顯示到前台(對用戶可見)時,Followed by onResume();當Activity要隱藏時,Followed by onStop() 。
    • onResume:當Activity開始用用戶交互的時候回調此方法。此時這個Activity在Activity棧的頂端。Always followed by onPause().
    • onPause:當系統准備打開另一個Activity的時調用。此方法通常被用來保存當前的數據、停止動畫、一些消耗cpu的操作等。並且應該處理的很及時。
    • onStop:當Activity對用戶不可見的時候調運。
    • onDestroy:在Activity被銷毀之前調運。
    Activity的這幾個生命周期函數是成對出現的:onCreate和onDestroy,onStart和onStop(Activity的View已被創建,但對用戶不可見),onResume和onPause(Activity對用戶仍然可見)。

  • 如果Activity A正在運行,現在打開Activity B,Activity A、B的生命周期方法的執行順序是怎樣的?
    在Android API中是這樣onPause方法的:

Called when the system is about to start resuming another activity.

它是說當系統准備打開另一個Activity的時候調用onPause方法。因此,此過程應該是這樣的:

通過運行程序,打印log,也可以驗證這個的結論,log截圖如下:
這裡寫圖片描述

  • 兩個Activity之間怎麼傳遞數據?

    基本的數據可以通過Intent的putExtra()來傳遞,如果是其他數據類型,可以通過Intent的putExtras()來傳遞,此時改函數裡需要傳遞一個Bundle類型的數據,Bundle可以通過如下兩種方式來創建

        Bundle bundle=new Bundle();
        bundle.putSerializable("data",obj);

    或者

        Bundle bundle=new Bundle();
        bundle.putParcelable("data",obj);
其中 obj分別需要繼承自Serializable或者Parcelable。這裡說一下Serializable和Parcelable是區別。Serializable是Java中的,它是將數據以二進制的形式寫入的文件中來保存的,需要時就從文件中讀取。而Parcelable是Android中獨有的,它是將數據寫入到內存中,用的時候直接從內存中度取,因此效率較高,但是Parcelable不能放較大的數據,因為這樣會導致OOM。

  • 描述一下Service的生命周期、啟動方式及區別、如何停止Service?
    在Service的生命周期中被調用的方法有:onCreate、onStart、onDestroy、onBind、onUnbind,顯然比Activity的少許多。
    Service的啟動方式有兩種:
    • 通過startService:
      Service會經過onCreate,onStart,然後運行,在調用stopService時,會回調onDestroy方法,停止Service。如果此種情況下打開Service的Activity退出前不調運stopService,次Service會一直運行,直至被系統回收(當系統內存不夠時)。
    • 通過bindService:
      Service會經過onCreate,onBind,然後運行,在調用unBindService時,會回調onDestroy方法,停止Service。如果此種情況下打開的Service會和打開它的Activity綁定在一起,Activity銷毀,Service也被銷毀。
    注:一個Service只會被創建一次,當它執行完onCreate方法後,調運再startService,只會執行onStart方法,調運再bindService,只會執行onBind方法。
    被start的Service只能調運stopService來停止Service,被bind的Service只能調運unBindService來停止Service。同時調運了start、bind的Service則分別需要調運stopService、unBindService來停止Service。當然,由於系統內存不夠,Service被回收的情況例外。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved