Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android四大組件之Activity

Android四大組件之Activity

編輯:關於Android編程

?Activity
?BroadcastReceiver 廣播接收者
?Service 服務
?ContentProvider 內容提供者

Activity的繼承關系

public class Activity extends ContextThemeWrapper implements ….

public class ContextThemeWrapper extends ContextWrapper

public class ContextWrapper extends Context

public abstract class Context

Activity的編寫步驟:
1.寫一個類繼承 Activity
2.重寫onCreate()方法
3.在清單文件的下面聲明activity
需要配置 布局文件 res/layout/…
需要設置布局文件 setContentView(R.layout.activity_main);

Activity相關

Activity生命周期
\Android四大組件

entire lifetime –>完整生命周期
onCreate() –> onStart() –> onResume() –> onPause() –> onStop() –> onDestroy()

visible lifetime –>可視化生命周期
onStart()–>onResume()–>onPause()–>onStop() –> onRestart();

foreground lifetime –>前台生命周期
onResume() –> onPause()

onRestart()調用過程
onStop() –> onRestart() –> onStart()

?onCreate()
當activity被創建時調用的方法

?onStart()
在onCreate()方法之後調用,當用戶看到界面的時候調用

?onResume()
在onStart()方法之後調用,當activity後去焦點的時候調用

?onPause()
當activity失去焦點的時候調用 –> activity還能看見,但是對於activity裡面的點擊事件都無效了

?onStop()
當activity界面不可見的時候調用

?onDestroy()
當activity被銷毀的時候調用

?onRestart()
當用戶按home鍵切換到桌面,然後再進入activity的時候 會調用

配置activity沒有標題欄方法

?配置application的theme
true

?在自己寫的activity的oncreate的方法裡加入
requestWindowFeature(Window.FEATURE_NO_TITLE);
注意:這個方法要在setContentView之前調用,否則會報錯

怎麼創建一個activity界面
1.創建類繼承Activity
2.在清單文件(AndroidManifest.xml)裡面配置activity
3.實現類裡的OnCreate的方法 –>這是Activity開啟時調用的方法
4.在OnCreate方法裡用 setContentView() –>指定activity顯示的layout頁面

怎麼跳轉一個Activity

直接開啟

1.初始化顯示意圖,制定要跳轉的Activity
Intent intent = new Intent(上下文,myActivity.class);
或者:
Intent intent = new Intent();
intent.setClass(上下文,myActivity.class);

2.如果有參數,用intent攜帶參數
intent.putExtra(key,value); –>裡面存放的格式有:數據基本類型,序列化對象,字節數組…
如果對象 實現了 Parcelable接口 或者 Serializable接口,也可以通過intent來傳遞

3.調用startActivity 來跳轉新頁面
上下文.startActivity(intent);

4.如果當前頁面需要關閉,在當前頁面調用finish方法
上下文.finish();

5.跳轉過去的頁面要獲取數據調用intent的get…方法
注意:這裡不能new一個intent,否則拿不到數據,要獲跳轉過來的intent,用getIntent來獲取
Intent intent = getIntent();
intent.getXXXExtra();

利用startForResult來開啟
1.初始化意圖
2.如果有參數設置參數

3.調用startActivityForResult() 跳轉頁面
startActivityForResult(intent,requestCode);
–>requestCode:請求碼,設置大於和等於0的數字

4.在跳轉的activity裡實現回跳的邏輯
Intent intent = new Intent();
intent.putXXX(); –>根據業務需求是否需要攜帶參數
setResult(resutlCode,intent);
finish(); –>最後需要關閉當前頁面

5.當前activity實現onActivityResult()方法 –> 這是回跳的時候執行的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
requestCode 是調用startActivityForResult時設置的requestCode
resultCode 是回跳的activity設置的code
data 是回跳時候攜帶的參數
可能當前頁面需要跳轉的頁面過多,這裡可以用requestCode和resultCode去過濾

顯示意圖&隱式意圖
?顯示意圖:必須指定打開的activity的類名或者路徑名

應用場景–>適合自己應用程序內部使用,效率高
例子:
Intent intent = new Intent();
intent.setClassName(應用程序包名, 要跳轉的activity路徑名);
startActivity(intent);

?隱示意圖:需要指定action(動作)和category,如果action相同,而內容不同,可以配置data來區分

應用場景–>適合應用程序之間調用,根據action在去遍歷查找,效率低

例子:
1.要跳轉的activity在清單文件裡增在intent-filter


//默認

2.誰要跳轉到這個activity,誰的方法裡面調用
Intent intent = new Intent();
intent.setAction("要跳轉的activity在清單文件裡配置的action");
intent.addCategory("android.intent.category.DEFAULT");-->默認
startActivity(intent);

隱示意圖需要注意的地方

?在清單文件的 intent-filter 裡面還可以配置 data標簽,data標簽可以配置多個不同種類型的
例如:

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved