かめのはこ

とあるエンジニアのメモ帳です

【android】Activity間のデータ共有

Android開発時にActivity間でデータ共有したい
 
いくつか手法はあるみたいで
 
?intentでパラメータとして渡す
?applicationをextendしたクラスを作成する
?共有クラスを作る
 
今回はActivity以外にも汎用的に利用したかったのと
ConcurrentHashMapを使ってみたかったので
?を作ってみた。
 
単純に全部staticにしてセットする変数名もhashとして
汎用性をもたせた。
 
じゃばらーには怒られそうな作りですが。
 
 
// ソース

import java.util.concurrent.ConcurrentHashMap;
public class Shared {
 // hashmap
 static private ConcurrentHashMap<String,Object> map = new ConcurrentHashMap<String, Object>();
 // set
 static public Object set(String key, Object val){
  return Shared.map.put(key,val);
 }
 // get
 static public <T> T get(String key){
  return (T)Shared.map.get(key);
 }
}

 
// 使い方
※テキストデータを突っ込む

Shared.set("key1","val");
String data = Shared.get("key1");

 
※もちろん他の型もいける

Shared.set("key2", 1);
int data = Shared.get("key2");