一:顯示意圖
應用場景:在應用程序內部進行跳轉。
缺點:耦合性較高
常規使用方式:
在AndroidManifest中加入一個新的activity標簽
Intent intent = new Intent();
intent.setClass(getApplicationContent(),secondActivity.class);
startActivity(intent);
二:隱式意圖
應用場景:在不知道某一應用程序的類名,包名,並且引用不到時。可以跳轉到其他應用。帶參數訪問浏覽器的實現。
優點:耦合性較低
注意:data與type不可以分開寫,使用setDataAndType()方法
常規使用方式:
在AndroidManifest中加入一個新的activity標簽
//默認格式
//數據標識
//數據類型
Intent intent = new Intent();
intent.setAction("動作");
intent.setDataAndType(Uri.parse("abc:123"),"list/person"); //123為所攜帶的數據
startActivity(intent);
三:Intent傳遞數據
應用場景:傳遞數據,RP計算器。
Bundle:數據捆,打包傳輸
常規使用方式1:
第一個頁面
Intent inent = new Intent();
intent.setClass(this,secondActivity.class);
Bundle bundle = new Bundle(); //打包發送
bundle.putString("name",name);
intent.putExtra("maps",bundle);
startActivity(intent);
第二個頁面
TextView tv = new TextView(this);
Intent intent = this.getIntent();
Bundle bundle = intent.getBundleExtra("maps"); //獲取打包數據bundle
String name = bundle.getString("name'); //取出需要的數據
tv.setText(name);
setContentView(tv);
常規使用方式2:
創建對象類(javabean)Person
實現Serializable接口
private static final long serialVersionUID = 1L;
第一個頁面
Intent intent = new Intent();
intent.setClass(this,secondActivity.class);
Person person = new Person(name); //序列化對象傳遞
intent.putExtra("person',person);
startActivity(intent);
第二個頁面
TextView tv = new TextView(this);
Intent intent = this.getIntent();
Person p = (Person)intent.getSerializableExtra("person');
String name = p.getName();
四:Intent返回數據
常規使用方式
第一個頁面
將startActivity(intent); 改為 startActivityForResult(intent,1000); //1000為請求碼。理解為標識
實現onActivityResult方法
if(requestCode == 1000 && resultCode == Activity.RESULT_OK)
{
String rpText = data.getStringExtra("rpText");
Toast.makeText(this,rpText,1).show();
}
第二個頁面
實現onBackPressed方法 //返回鍵點擊事件
去掉繼承父類方法,因為繼承後點擊返回鍵將直接返回
Intent data = new Intent();
data.putExtra("rpText",text);
setResult(Activity.RESULT_OK,data); //將返回碼改為0
this.finish(); //即返回事件
五:Activity生命周期
onPause方法:暫停。在activity被另一個activity給蓋住時(蓋住一部分),調用onPause,跑到暫停狀態。
onResume方法:焦點激活。在onPause狀態時,把activity上的界面給關掉就返回到,焦點狀態onResume。
onStop方法:停止。當activity在焦點時,有一個界面把activity完全蓋住時,先調用onPause方法,再調用onStop方法 進入此狀態。
onRestart方法:重啟。當activity處於停止狀態時,把上面的activity給關掉,這時候會調用 onRestart->onstart->onResume
常用使用方式
onCreate : 初始化界面參數時
onDestory ; 釋放資源
onResume : 界面獲取焦點時回調,讓界面動起來
onPause : 來一個界面蓋住了一部分activity,動作:停止動態刷新數據
六:橫豎屏切換Activity的生命周期
默認情況下會重新加載activity,容易重新加載數據,造成數據丟失。如游戲。
具體流程:onPause -> onStop ->onDestory -> onCreate ->onStart ->onResume
避免橫豎屏切換重新創建activity
在清單文件的activity節點中加入:android:configChanges="orientation|keyboardHidden "
七:任務棧
為了提高用戶體驗
一個應用程序包含多個activity
棧的頂部的activity會在界面中顯示,獲取焦點。
任務棧的特點:先進後出,後進先出。
八:雜七雜八
AndroidManifest文件中含有如下過濾器的activity組件為默認啟動組件,應用程序啟動時,系統自動調用它。