国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程四大組件之Activity用法實例分析

2020-04-11 11:04:40
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程四大組件之Activity用法。分享給大家供大家參考,具體如下:

這里詳細介紹如何創建Activity、生命周期、內存管理、啟動模式。

創建Activity

一.定義Activity

1. 定義Activity 定義類繼承Activity

2.在AndroidManifest.xml的節點中聲明<activity>

顯式意圖創建Activity三種方式方式

//第一種方式:構造函數,代碼少Intent intent1 =new Intent(this,NewActivity.class);startActivity(intent1);//第二種方式:類名形式,靈活,可擴展性強Intent intent2 =new Intent();intent2.setClassName(this,"cn.test.activity.NewActivity");startActivity(intent2);//第三種方式 :包名類名形式,可啟動其他程序中的ActivityIntent intent3 =new Intent();intent3.setClassName("cn.test.taskdownloader","cn.test.taskdownloader.MainActivity");startActivity(intent3);

二.創建Activity并傳遞數據

1.在意圖對象中封裝了一個Bundle對象,可以用來攜帶數據

2.在新Activity中可以獲得意圖對象以獲取其中Bundle保存的數據

//傳遞數據方式一Intent intent1 =new Intent(this,NewActivity.class);Bundle bundle=new Bundle();bundle.putString("data","Test");intent1.putExtras(bundle);startActivity(intent1);//獲取意圖方式一Bundle bundle2 =getIntent().getExtras();Toast.makeText(this,bundle2.getString("data"),0).show();//傳遞數據方式二Intent intent2 =new Intent(this,NewActivity.class);intent2.putExtra("data","Test2");startActivity(intent2);//獲取意圖方式二 Toast.makeText(this,getIntent().getStringExtra("data"),0).show();

三.創建Activity獲取返回數據

1. 使用startActivityForResult(Intent intent, int requestCode) 方法打開Activity

2. 重寫onActivityResult(int requestCode, int resultCode, Intent data) 方法

3 .新Activity中調用setResult(int resultCode, Intent data) 設置返回數據之后,關閉Activity就會調用onActivityResult方法

請求的activity:

public class MainActivity extends Activity {  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);  }  /**   * 創建Activity獲取返回數據   * @param view   */  public void createNew(View view){    Intent intent1 =new Intent(this,NewActivity.class);    intent1.putExtra("data","請求數據");    //打開Activity等待返回    startActivityForResult(intent1,100);  }  /**   * 重寫onActivityResult,關閉Activity就會調用此方法   */  protected void onActivityResult(int requestCode, int resultCode, Intent data) {    Toast.makeText(this,"requestCode:"+requestCode+",requestCode:"+resultCode+",data"+data.getStringExtra("result"),0).show();  }}

返回的activity:

public class NewActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.new_activity);    Toast.makeText(this,getIntent().getStringExtra("data"),0).show();    //設置返回數據    Intent data =new Intent();    data.putExtra("result","返回的數據");    setResult(200,data);  }}

四.隱式意圖創建Activity

1.顯式意圖是指在創建意圖時指定了組件,而隱式意圖則不指定組件,通過動作、類型、數據匹配對應的組件

2.在清單文件中定義<activity>時需要定義<intent-filter>才能被隱式意圖啟動

3. <intent-filter>中至少配置一個<action>和一個<category>,否則無法被啟動

4.Intent對象中設置的action、category、data在<intent-filter>必須全部包含才能啟動

5.<intent-filter>中的<action>、<category>、<data>都可以配置多個,Intent對象中不用全部匹配,每樣匹配一個即可啟動

6.如果一個意圖可以匹配多個Activity,Android系統會提示選擇

生命周期

一.Acitivity三種狀態

運行:activity在最前端運行

暫停:activity可見,但前端還有其他acti vity,被覆蓋一部分,或者前端activity透明

停止:activity不可見,完全被覆蓋

二.生命周期相關方法

onCreate:創建時調用,或者程序在暫停、停止狀態下被殺死之后重新打開時也會調用

onStart:onCreate之后或者從停止狀態恢復時調用

onResume:onStart之后或者從暫停狀態恢復時調用,從停止狀態恢復時由于調用onStart,也會調用onResume

onPause:進入暫停、停止狀態,或者銷毀時會調用

onStop:進入停止狀態,或者銷毀時會調用

onDestroy:銷毀時調用

onRestart:從停止狀態恢復時調用

如圖所示:

三.保存信息相關方法

onSaveInstanceState:在Activity被動的摧毀或停止的時候調用,用于保存運行數據,可以將數據存在在Bundle中

onRestoreInstanceState:該方法在Activity被重新繪制的時候調用,例如改變屏幕方向,savedInstanceState為onSaveInstanceState保存的數據

內存管理

Android系統在運行多個進程時,如果系統資源不足,會強制結束一些進程。優先選擇哪個進程來結束是有優先級的。以下順序靠上的優先結束

空:進程中所有Activity都已銷毀

后臺:進程中有一個停止狀態的Activity

服務:進程中一個運行中的Service

可見:進程中有一個暫停狀態的Activity

前臺:進程中正在運行一個Activity

啟動模式

1.在AndroidManifest.xml中的<activity>標簽中可以配置android:launchMode屬性,用來控制Actvity的啟動模式

2.在Android系統中我們創建的Acitivity是以棧的形式呈現的

standard:每次調用startActivity()啟動時都會創建一個新的Activity放在棧頂

singleTop:如果啟動的Activity時,指定Activity不在棧頂就創建,如在棧頂,則不再創建

singleTask:如果啟動的Activity不存在就創建,如果存在直接跳轉到指定的Activity所在位置

singleInstance:如果啟動的Activity不存在就創建,如果存在就將指定的Activity移動到棧頂

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵德县| 碌曲县| 嘉峪关市| 邵阳市| 福安市| 彭阳县| 宜昌市| 德兴市| 岢岚县| 苍溪县| 新巴尔虎右旗| 元谋县| 怀集县| 富蕴县| 定西市| 凯里市| 长宁县| 石嘴山市| 东兰县| 蓝山县| 运城市| 乐东| 鹤峰县| 隆林| 太原市| 吴川市| 兴海县| 海盐县| 桐柏县| 桂东县| 沂水县| 武冈市| 全州县| 九寨沟县| 凤台县| 滦平县| 聂荣县| 梨树县| 浠水县| 蒲城县| 绍兴市|