安卓初学者笔记(四):用白话讲明白Activity是什么
剛開始學習Android,被Activity搞的暈頭轉向,看了很多資料,才大概搞清楚。因為那些高手寫的都是術語和英文,想看懂文章就像要去威虎山剿匪一樣,必須懂那些黑話,要不然基本有去無回。
Activity(活動)其實是“安卓”系統的重要組件(組成部分)之一。Android四大組件有Activity活動,Service服務,Content Provider內容提供,BroadcastReceiver廣播接收器。
一個Activity是一個應用程序的組件,通常一個Activity里會有一個頁面,用戶讓用戶來操作,完成如打電話、發短信、拍照等功能。
通常一個Activity活動,會有七種狀態,厲害吧?
onStart(); —->中文翻譯:開始
onRestart(); —->中文翻譯:重新開始
onResume(); —->中文翻譯:恢復
onPause(); —->中文翻譯:暫停
onStop(); —->中文翻譯:停止
onDestroy(); —->中文翻譯:消毀
為什么會有這么多種狀態?因為Android是機器人,不是人,還沒有達到人工智能,所以你想讓它做什么事,必須詳細告訴它每一步要做什么,在做這些事的過程中可能會遇到什么情況,如何處理。
比如,指揮一個機器人如何看書,如下圖:
指揮機器人的步驟越詳細,越容易讓機器人理解。看懂了以上的內容,再來看看原版的圖片。
這回大概能理解Activity的工作原理了吧?
接下來,要引入下一個概念:棧,棧(stack)又名堆棧,堆,一堆東西,有點好理解了吧?如果還是不理解,直接就把棧想像成幾頁A4紙,實際上,就是這原理。
可以把安卓的Activity棧想像成幾張A4紙,你看到手機現在的可操作頁面就是最頂上的A4紙,你可以在這兒寫寫畫畫。需要其它頁的時候,通常把這頁紙放到下邊,再拿一張紙放在最上面(棧頂)。
Android 是通過一種 Activity 棧的方式來管理 Activity 的,一個 Activity 的實例的狀態決定它在棧中的位置。處于前臺的 Activity 總是在棧的頂端,當前臺的 Activity 因為異?;蚱渌虮讳N毀時,處于棧第二層的 Activity 將被激活,上浮到棧頂。當新的 Activity 啟動入棧時,原 Activity 會被壓入到棧的第二層。一個 Activity 在棧中的位置變化反映了它在不同狀態間的轉換。Activity 的狀態與它在棧中的位置關系如下圖所示:
當然,以上的基本思路能理解,接下來,我們就可以做實驗了。
建立一個新的項目,畫兩個頁面,這個可以會。
然后把如下代碼復制到MainActivity.java里:
package com.example.jeffersli.myapplication;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button;public class MainActivity extends Activity {private static final String TAG = "ActivityDemo";private Button button,button2;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button)findViewById(R.id.button);button2=(Button)findViewById(R.id.button2);button.setOnClickListener(new View.OnClickListener(){public void onClick(View v){Intent intent = new Intent();intent.setClass(MainActivity.this, SecondActivity.class);startActivity(intent);}});button2.setOnClickListener(new View.OnClickListener(){public void onClick(View v){finish();}});Log.e(TAG, "start onCreate~~主頁面建立,拿起第一本書");}@Overrideprotected void onStart() {super.onStart();Log.e(TAG, "start onStart~~主頁面開始,開始翻頁");}@Overrideprotected void onRestart() {super.onRestart();Log.e(TAG, "start onRestart~~主頁面重啟,找到剛才的書");}@Overrideprotected void onResume() {super.onResume();Log.e(TAG, "start onResume~~主頁面繼續,看書");}@Overrideprotected void onPause() {super.onPause();Log.e(TAG, "start onPause~~主頁面暫停,放下");}@Overrideprotected void onStop() {super.onStop();Log.e(TAG, "start onStop~~主頁面停止,第一本書本自動合上");}@Overrideprotected void onDestroy() {super.onDestroy();Log.e(TAG, "start onDestroy~~主頁面消毀,把第一本書放到書架上");}}再建立一個SecondActivity,別忘了在AndroidManifest.xml里注冊。語句為:
package com.example.jeffersli.myapplication;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button;public class SecondActivity extends Activity {private static final String TAG = "ActivityDemo";private Button button;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);button=(Button)findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener(){public void onClick(View v){finish();}});Log.e(TAG, "start onCreate~~第二頁面建立,拿起第二本書");}@Overrideprotected void onStart() {super.onStart();Log.e(TAG, "start onStart~~第二頁面開始,開始翻頁");}@Overrideprotected void onRestart() {super.onRestart();Log.e(TAG, "start onRestart~~第二頁面重啟,找到剛才的書");}@Overrideprotected void onResume() {super.onResume();Log.e(TAG, "start onResume~~第二頁面繼續,看書");}@Overrideprotected void onPause() {super.onPause();Log.e(TAG, "start onPause~~第二頁面暫停,放下");}@Overrideprotected void onStop() {super.onStop();Log.e(TAG, "start onStop~~第二頁面停止,第二本書本自動合上");}@Overrideprotected void onDestroy() {super.onDestroy();Log.e(TAG, "start onDestroy~~第二頁面消毀,把第二本書放到書架上");} }接下來編譯運行,在Logcat窗口就可以看到有意思的內容了,玩一會就理解這些Activity到底在忙啥了。
總結
以上是生活随笔為你收集整理的安卓初学者笔记(四):用白话讲明白Activity是什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 批量下载文件
- 下一篇: js实现外链访问劫持代码 可劫持百度快照