android不同activity之間共用資料解決方案

來源:互聯網
上載者:User

最近做區域網路socket串連問題,要在多個activity之間公用一個socket串連,就在網上搜了下資料,感覺還是application方法好用,帖出來分享下!
Android中在不同Activity中傳遞變數,通常使用Intent中Bundle添加變數的操作方法。
儲存參數時: 複製代碼 代碼如下:Intent intent = new Intent();
intent.setClass(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("name", "xiaozhu");
intent.putExtras(bundle);
startActivity(intent);

讀取參數: 複製代碼 代碼如下:Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");
[java] view plaincopy
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("name");

不過在多個Activity中經常使用同一變數時,使用Bundle則比較麻煩,每次調用Activity都需要設定一次。
如想在整個應用中使用,在java中一般是使用靜態變數,而在android中有個更優雅的方式是使用Application context。
建立一個類,繼承自Application 複製代碼 代碼如下:class MyApp extends Application {
private String myState;
public String getState() {
return myState;
}
public void setState(String s) {
myState = s;
}
}

在AndroidManifest.xml的application加個name屬性就可以了,如下面所示: 複製代碼 代碼如下:<application android:name=".MyApp" android:icon="@drawable/icon" android:label="@string/app_name">

使用時: 複製代碼 代碼如下:class Blah extends Activity {
@Override
public void onCreate(Bundle b){
...
MyApp appState = ((MyApp)getApplicationContext());
String state = appState.getState();
...
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.