用Intent傳遞數據


向下一個活動傳遞數據
Intent除了跳轉活動,還可以在各個活動之間傳遞數據,我們來看一下。
啟動活動時傳遞數據很簡單,通過putExtra()方法,我們就可以將數據暫存在Intent中,putExtra()里要傳入兩個參數,第一個是鍵,用於第二個活動找到你,第二個則是存儲的數據。
我們在MainActivity將之前的代碼修改一下

button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data="Hello!";
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("extra_data",data);
startActivity(intent);
}
});
1
2
3
4
5
6
7
8
9
那么第二個活動就得到了Intent里包含的數據,我們要將他取出來,通過getIntent來獲取Intent,然后通過getStringExtra來獲取傳遞的數據。(如果是int類型就是getIntExtra,以此類推)

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent=getIntent(http://www.amjmh.com/v/);
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);
}
1
2
3
4
5
6
7


2.返回數據給上一個活動
具體參考"第一行代碼",原理一樣,這里就不贅述了。
當然Intent還有一些其他的功能,具體可以看看這個
Intent:https://www.jianshu.com/p/67d99a82509b

3.活動的生命周期

Android是使用任務(Task)來管理Activity的,一個任務就是一組存放在棧里的Activity集合,這個棧被稱作返回棧,棧(堆棧)是一種先進后出的數據結構。


  每當啟動一個新的Activity時,它會被放入返回棧中,並處於棧頂的位置。每當我們按下Back鍵或調用activity的finish()方法去銷毀一個活動時,處於棧頂的Activity會出棧,這時前一個入棧的Activity就會重新處於棧頂的位置。系統總是會顯示處於棧頂的Activity給用戶。

Activity的生存期
Activity類中定義了7個回調方法,覆蓋了Activity生命周期的每一個環節,下面來一一介紹這7個方法

1.onCreate()
  這個方法在每一個Activity類都會有,當我們新建一個Activity類時,一定會重寫父類的onCreate方法,onCreate方法會在Activity第一次被創建時調用。我們應該在這個方法中完成Activity的初始化操作,比如說加載布局,初始化布局控件,綁定按鈕事件等。

2.onStart()
  這個方法在Activity由不可見變為可見時調用。

3.onResume()
  這個方法在Activity准備好喝用戶交互的時候調用。此時的Activity一定位於返回棧的棧頂,並且處於運行狀態。

4.onPause()
  這個方法在系統准備去啟動或者恢復另一個Activity的時候調用。

5.onStop()
  這個方法在Activity完全不可見的時候調用。它和onPause()方法的主要區別在於,如果啟動的新Activity是一個對話框式的activity,那么,onPause()方法會得到執行,而onStop()方法並不會執行。

6.onDestory()
  這個方法在Activity被銷毀之前調用,之后Activity的狀態將變為銷毀狀態。

7.onRestart()
  這個方法在Activity由停止狀態變為運行狀態之前調用,也就是Activity被重新啟動了

4.活動的啟動模式
1.默認啟動模式standard
該模式可以被設定,不在manifest設定時候,Activity的默認模式就是standard。在該模式下,啟動的Activity會依照啟動順序被依次壓入Task中:


2.棧頂復用模式singleTop
在該模式下,如果棧頂Activity為我們要新建的Activity(目標Activity),那么就不會重復創建新的Activity。


3.棧內復用模式singleTask
與singleTop模式相似,只不過singleTop模式是只是針對棧頂的元素,而singleTask模式下,如果task棧內存在目標Activity實例,則:

1.將task內的對應Activity實例之上的所有Activity彈出棧。
2.將對應Activity置於棧頂,獲得焦點。


4.全局唯一模式singleInstance
這是我們最后的一種啟動模式,也是我們最惡心的一種模式:在該模式下,我們會為目標Activity分配一個新的affinity,並創建一個新的Task棧,將目標Activity放入新的Task,並讓目標Activity獲得焦點。新的Task有且只有這一個Activity實例。 如果已經創建過目標Activity實例,則不會創建新的Task,而是將以前創建過的Activity喚醒(對應Task設為Foreground狀態)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM