安卓開發 Activity入門
阿新 • • 發佈:2018-10-24
androidm cte hello star tin 暫停 app manifest quest
生命周期
Activity包含5種狀態,涉及7種方法
1. 啟動狀態
2. 運行狀態 ***
即使內存不足,Android先銷毀棧底的Activity,來確保當前Activity正常運行
3. 暫停狀態 (可見,無法獲取焦點
4. 停止狀態 (完全不可見
5. 銷毀狀態
OnCreat 創建時調用,初始化設置
OnStart Activity即將可見時調用
OnResume 獲取焦點開始與用戶交互時調用
OnPause 在當前Activity被其他Activity覆蓋或鎖屏時調用
OnStop 在Activity對用戶不可見時調用
OnDestroy
OnRestart
Activity的啟動模式
standard模式
singleTop模式
singleTask模式
singleInstance模式
Activity 之間的跳轉
Intent
顯式意圖
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);
隱式意圖
Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); startActivity(intent);
category是一個默認值的話,可以省略不屑
在清單文件 AndroidManifest.xml 配置 <intent-filter> 如下所示
<intent-filter tools:ignore="AppLinkUrlError"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" /> </intent-filter>
數據傳遞
intent.putExtra("data", "draymonder");
數據回傳
// 請求方 Intent intent = new Intent(this, MainActivity.class); startActivityForResult(intent, 1); // 接收方回傳數據 Intent intent = new Intent(); intent.putExtra("data", "Hello"); setResult(1, intent);
// 請求方 因為 接收方Activity結束後 會調用回傳函數 @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityReslt(requestCode, resultCode, data); if(requestCode == 1) { if(resultCode == 1) { String str = data.getStringExtra("data"); System.out.println(str); } } }
Bundle 傳遞信息
Intent intent = new Intent(this, Main2Activity.class); Bundle bundle = new Bundle(); bundle.putString("data", "draymonder"); bundle.putInt("height", 173); intent.putExtras(bundle); startActivity(intent);
獲取信息
Bundle bundle = this.getIntent().getExtras(); String str = bundle.getString("data"); int height = (Integer) bundle.get("height"); Log.i("Main2",str + " " + height);
安卓開發 Activity入門