androidの異なるactivity間でデータを共有する解決方法

1788 ワード

最近ローカルエリアネットワークのsocket接続の問題をして、複数のactivityの間で1つのsocket接続を公用して、ネット上で資料を探して、やはりアプリケーションの方法が使いやすいと感じて、投稿して分かち合います!
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を使用するより優雅な方法があります.
新しいクラスを作成し、アプリケーションから継承
 
  
class MyApp extends Application {
private String myState;
public String getState() {
return myState;
}
public void setState(String s) {
myState = s;
}
}

AndroidManifestでxmlのアプリケーションにnameプロパティを追加すればいいです.以下に示します.
 
  


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