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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓系列转载,有时间可以参考学习

發(fā)布時(shí)間:2025/1/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓系列转载,有时间可以参考学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:Activity的生命周期方法

?Android提供了很多Activity的生命周期方法,比如我們常用的onCreate、onPause、onResume等。這里主要介紹粗粒度的周期方法,諸如onPostCreate、onPostResume等
這些細(xì)粒度的周期方法可以參考Android的API文檔,在你需要更細(xì)層次的控制的時(shí)候可以使用這些細(xì)粒度的方法。粗粒度的周期方法有以下幾個(gè):
onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy(),從名字上就可以看出來這些方法在什么時(shí)候執(zhí)行。

二:測試Activity的生命周期方法的執(zhí)行順序

為了能更明白上這幾個(gè)周期放的執(zhí)行順序,我們新建一個(gè)HelloWorld項(xiàng)目,在Activity中覆蓋這幾個(gè)方法,打印出日志就可以看出來執(zhí)行順序了

  • 新建HelloWorld項(xiàng)目,詳細(xì)步驟可以參見:

    Android教程之三:第一個(gè)Android應(yīng)用,HelloWorld

  • 修改main.xml內(nèi)容為:?
    Xml代碼??
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:orientation="vertical"??
  • ????android:layout_width="fill_parent"??
  • ????android:layout_height="fill_parent"??
  • ????>??
  • <TextView????
  • ????android:layout_width="fill_parent"???
  • ????android:layout_height="wrap_content"???
  • ????android:text="第一個(gè)Activity"??
  • ????/>??
  • <Button???
  • ????android:id="@+id/second"??
  • ????android:layout_width="wrap_content"??
  • ????android:layout_height="wrap_content"??
  • ????android:text="打開第二個(gè)Activity"/>??
  • </LinearLayout>??
  • ?
    這里主要是為增加一個(gè)文本顯示和一個(gè)按鈕用于顯示信息和操作。
  • 新建布局文件second.xml,內(nèi)容如下: Xml代碼??
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <LinearLayout??
  • ??xmlns:android="http://schemas.android.com/apk/res/android"??
  • ??android:orientation="vertical"??
  • ??android:layout_width="fill_parent"??
  • ??android:layout_height="fill_parent">??
  • ??<TextView????
  • ????android:layout_width="fill_parent"???
  • ????android:layout_height="wrap_content"???
  • ????android:text="第二個(gè)Activity"??
  • ????/>??
  • <Button???
  • ????android:id="@+id/exit"??
  • ????android:layout_width="wrap_content"??
  • ????android:layout_height="wrap_content"??
  • ????android:text="退出"/>??
  • </LinearLayout>??
  • ?這里主要是為增加一個(gè)文本顯示和一個(gè)退出按鈕用于退出當(dāng)前Activity。
  • 新建一個(gè)Activity,名字為SecondActivity,內(nèi)容如下:?
    Java代碼??
  • public?class?SecondActivity?extends?Activity?{??
  • ????private?final?static?String?TAG="SecondActivity";??
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????Log.v(TAG,?"onCreate");??
  • ????????setContentView(R.layout.second);??
  • ????????//退出按鈕??
  • ????????Button?btnExit=(Button)findViewById(R.id.exit);??
  • ????????//為退出按鈕設(shè)置單擊事件??
  • ????????btnExit.setOnClickListener(new?OnClickListener()?{??
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????finish();//關(guān)閉當(dāng)前Activity,也就是退出??
  • ????????????}??
  • ????????});??
  • ????}??
  • ????@Override??
  • ????protected?void?onStart()?{??
  • ????????super.onStart();??
  • ????????Log.v(TAG,?"onStart");??
  • ????}??
  • ????@Override??
  • ????protected?void?onResume()?{??
  • ????????super.onResume();??
  • ????????Log.v(TAG,?"onResume");??
  • ????}??
  • ????@Override??
  • ????protected?void?onPause()?{??
  • ????????super.onPause();??
  • ????????Log.v(TAG,?"onPause");??
  • ????}??
  • ????@Override??
  • ????protected?void?onStop()?{??
  • ????????super.onStop();??
  • ????????Log.v(TAG,?"onStop");??
  • ????}??
  • ????@Override??
  • ????protected?void?onDestroy()?{??
  • ????????super.onDestroy();??
  • ????????Log.v(TAG,?"onDestroy");??
  • ????}??
  • ??????
  • }??
  • ?我在各個(gè)周期方法了都加了日志信息,便于跟蹤Activity的運(yùn)行過程
  • 修改HelloWorld類,內(nèi)容如下: Java代碼??
  • public?class?HelloWorld?extends?Activity?{??
  • ????private?final?static?String?TAG="HelloWorld";??
  • ????/**?Called?when?the?activity?is?first?created.?*/??
  • ????@Override??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????Log.v(TAG,?"onCreate");??
  • ????????setContentView(R.layout.main);??
  • ????????//打開第二個(gè)Activity的按鈕??
  • ????????Button?btnSecond=(Button)findViewById(R.id.second);??
  • ????????//設(shè)置單擊事件??
  • ????????btnSecond.setOnClickListener(new?OnClickListener()?{??
  • ????????????@Override??
  • ????????????public?void?onClick(View?v)?{??
  • ????????????????startActivity(new?Intent(HelloWorld.this,SecondActivity.class));??
  • ????????????????finish();//關(guān)閉當(dāng)前Activity??
  • ????????????}??
  • ????????});??
  • ????}??
  • ????@Override??
  • ????protected?void?onStart()?{??
  • ????????super.onStart();??
  • ????????Log.v(TAG,?"onStart");??
  • ????}??
  • ????@Override??
  • ????protected?void?onResume()?{??
  • ????????super.onResume();??
  • ????????Log.v(TAG,?"onResume");??
  • ????}??
  • ????@Override??
  • ????protected?void?onPause()?{??
  • ????????super.onPause();??
  • ????????Log.v(TAG,?"onPause");??
  • ????}??
  • ????@Override??
  • ????protected?void?onStop()?{??
  • ????????super.onStop();??
  • ????????Log.v(TAG,?"onStop");??
  • ????}??
  • ????@Override??
  • ????protected?void?onDestroy()?{??
  • ????????super.onDestroy();??
  • ????????Log.v(TAG,?"onDestroy");??
  • ????}??
  • }??
  • 運(yùn)行程序,分析結(jié)果,發(fā)現(xiàn)當(dāng)程序啟動的時(shí)候,日志信息為下圖:?

    ?由此可見當(dāng)打開一個(gè)Activity的時(shí)候,其周期方法執(zhí)行順序?yàn)?#xff1a;onCreate()->onStart()->onResume(),現(xiàn)在點(diǎn)擊“打開第二個(gè)Activity”按鈕,看日志的輸出如下圖:?

    ?當(dāng)應(yīng)用從Helloworld這個(gè)Activity啟動SecondActivity的時(shí)候,Android會先執(zhí)行HelloWorld的onPause方法,然后依次執(zhí)行SecondActivity的onCreate()->onStart()->onResume()方法
    當(dāng)SecondActivity呈現(xiàn)到屏幕上的時(shí)候再一次執(zhí)行Helloworld的onStop()->onDestroy(),把HelloWorld從Activity棧中移除銷毀。這里值得提的就是HelloWorld 中finish方法,因?yàn)閳?zhí)行了他所以
    HelloWorld才會從Activity棧中移除銷毀,這樣當(dāng)你按“返回”鍵返回的時(shí)候就回不到HelloWorld 這個(gè)Activity的界面了,而是直接回到的Android的應(yīng)用程序列表
    ?。
  • 三:分析結(jié)果

    根據(jù)上面例子可見一個(gè)Activity在啟動的時(shí)候會執(zhí)行onCreate()->onStart()->onResume(),在結(jié)束(或離開)的時(shí)候會執(zhí)行onPause()->onStop()->onDestroy(),這就是一個(gè)Activity的生命周期。
    因此我們要在onCreate方法里把Activity的需要的東西準(zhǔn)備好,也就是初始化;在onResume里對Activity里的東西做一些調(diào)整;在onPause做一些清理和保存工作(保存持久狀態(tài)),因?yàn)檫@是最后的
    機(jī)會,因?yàn)閛nPause完成之前Android不會結(jié)束托管Activity類的進(jìn)程,而之后進(jìn)程可能被結(jié)束??偨Y(jié)一下這幾個(gè)周期方法的作用:

  • ?
  • onCreate():創(chuàng)建Activity調(diào)用,用于Activity的初始化,還有個(gè)Bundle類型的參數(shù),可以訪問以前存儲的狀態(tài)。
  • onStart():Activity在屏幕上對用戶可見時(shí)調(diào)用
  • onResume():Activity開始和用戶交互的時(shí)候調(diào)用,這時(shí)該Activity是在Activity棧的頂部。
  • onPause():Activity被暫停時(shí)調(diào)用,也就是你要對你能看到的這個(gè)Activity說byebye的時(shí)候調(diào)用,這里可以做一些清理和保存工作
  • onStop():Activity被停止或者Activity變成不可見時(shí)調(diào)用
  • onDestroy():Activity被從內(nèi)存中移除,一般發(fā)生在執(zhí)行finish方法時(shí)或者Android回收內(nèi)存的時(shí)候

  • 好了,最后讓我們看一個(gè)API提供的Activity的狀態(tài)圖吧,看了他相信你對Activity的生命周期會更了解,如下圖:
    ?

    ?

    四:小結(jié)

    這節(jié)主要是通過一個(gè)例子分析Activity聲明周期,并對常用生命周期方法做了一些說明,應(yīng)該什么時(shí)候使用他們。到這里Android的很基礎(chǔ)的東西已經(jīng)說完了,




    本文轉(zhuǎn)載地址:

    http://android.group.iteye.com/group/wiki/2890-android-activity-life-cycle

    總結(jié)

    以上是生活随笔為你收集整理的安卓系列转载,有时间可以参考学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。