Android 中兩個(gè)Activity 之間的傳值問題
Android 中兩個(gè)Activity 之間的傳值問題
在Android項(xiàng)目中,有時(shí)需要一些全局的靜態(tài)變量來保存一些數(shù)據(jù),這樣在關(guān)閉賦值界面后,其他的頁面還可以調(diào)用這些數(shù)據(jù)。
但是我們知道,在Java中全局靜態(tài)變量(java中沒有全局變量這一個(gè)概念,但是java提供了public static關(guān)鍵字來實(shí)現(xiàn)一些類似于全局變量的關(guān)鍵字)都是在程序加載時(shí)就放人到內(nèi)存中,它是存儲(chǔ)在方法區(qū)里的。如果程序不結(jié)束,它將一直存在。這是會(huì)影響到系統(tǒng)的性能的。那么在android中可不可以不通過這種方式來傳遞值呢?
今天自己做了一個(gè)小demo,感覺還不錯(cuò):不通過全局靜態(tài)變量而實(shí)現(xiàn)兩個(gè)Activity之間傳遞數(shù)據(jù)。
一個(gè)SendActivity(保存數(shù)據(jù)的一方,或者是傳遞數(shù)據(jù)的一方),一個(gè)ReceiverActivity(使用數(shù)據(jù)的一方)為了簡(jiǎn)單起見,每個(gè)Activity對(duì)應(yīng)的布局文件中都只有一個(gè)按鈕。
SendActivity的java代碼
public class SendActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send);
//獲取按鈕對(duì)象
Button btnSendButton = (Button)findViewById(R.id.btnSend);
btnSendButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
//第一參數(shù)取的是這個(gè)應(yīng)用程序的Context,生命周期是整個(gè)應(yīng)用
//第二個(gè)參數(shù)是要跳轉(zhuǎn)的頁面的全路徑
intent.setClassName( getApplicationContext(), "com.example.testofdialog.ReceiveActivity" );
//Bundle類用作攜帶數(shù)據(jù),它類似于Map,用于存放key-value名值對(duì)形式的值
Bundle b = new Bundle();
b.putString("我是key", "這里就是你要傳遞的內(nèi)容了");
//此處使用putExtras,接受方就響應(yīng)的使用getExtra
intent.putExtras( b );
startActivity(intent);
// 關(guān)閉當(dāng)前頁面
System.exit(0);
//無論是exit還是finish都是可以的
//SendActivity.this.finish();
}
});
}
}
ReceiveActivity的java代碼
public class ReceiveActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receive);
Button btnReceiveButton = (Button)findViewById(R.id.btnReceive);
btnReceiveButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//最后的參數(shù)一定要和發(fā)送方的相同,否則得到空值
String rString = getIntent().getExtras().getString("我是key");
Toast.makeText(ReceiveActivity.this, rString, Toast.LENGTH_SHORT).show();
}
});
}
}
這里只是介紹了兩個(gè)Activity之間的通過Intent傳值的,那么如果有三個(gè)Activity是依次顯示的,但是,第三個(gè)Activity需要用到第一個(gè)Activity中的值,這種方法是否還能夠發(fā)揮功效?是否還有其他更好的方法?
以上就是Android 兩個(gè)Activity 之間的傳值問題,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android通過Handler與AsyncTask兩種方式動(dòng)態(tài)更新ListView(附源碼)
這篇文章主要介紹了Android通過Handler與AsyncTask兩種方式動(dòng)態(tài)更新ListView的方法,結(jié)合實(shí)例形式分析了ListView動(dòng)態(tài)更新的常用技巧,并附上完整實(shí)例源碼供讀者下載,需要的朋友可以參考下2015-12-12
Android LayoutInflater加載布局詳解及實(shí)例代碼
這篇文章主要介紹了Android LayoutInflater加載布局詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
Android自定義TipView仿QQ長(zhǎng)按后的提示窗口
這篇文章主要介紹了Android自定義TipView仿QQ長(zhǎng)按后的提示窗口,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
Android應(yīng)用隱私合規(guī)檢測(cè)實(shí)現(xiàn)方案詳解
這篇文章主要介紹了Android應(yīng)用隱私合規(guī)檢測(cè)實(shí)現(xiàn)方案,我們需要做的就是提前檢測(cè)好自己的應(yīng)用是否存在隱私合規(guī)問題,及時(shí)整改過來,下面提供Xposed Hook思路去檢測(cè)隱私合規(guī)問題,建議有Xposed基礎(chǔ)的童鞋閱讀,需要的朋友可以參考下2022-07-07
Android中findViewById獲取控件返回為空問題怎么解決
這篇文章主要介紹了Android中findViewById獲取控件返回為空問題怎么解決的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
Android?Studio打包?aar實(shí)現(xiàn)步驟示例詳解
這篇文章主要為大家介紹了Android?Studio打包aar步驟示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Android中FileProvider的各種場(chǎng)景應(yīng)用詳解
這篇文章主要為大家介紹了Android中FileProvider的各種場(chǎng)景應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

