首页 > 代码库 > Android数据传递方法

Android数据传递方法

Android中,Activity之间的数据传递有些复杂,比如通过IntentBundle等等,传递复杂对象时必须是实现了Serializable接口的类,这在很多时候使得处理页面间的数据传递很不方便。在JavaWeb中,Session对象传递数据很实用方便,对此,在Android中可不可以自己实现一个类似JavaWeb中的Session呢?

其实很简单,在不严谨的情况下,具体实现过程如下:

/*/////////////////////////////////////////////////////////////////
                          _ooOoo_                              
                         o8888888o                             
                         88" . "88                             
                         (| ^_^ |)                             
                         O\  =  /O                             
                      ____/`---'\____                           
                    .'  \\|     |//  `.                         
                   /  \\|||  :  |||//  \                       
                  /  _||||| -:- |||||-  \                      
                  |   | \\\  -  /// |   |                      
                  | \_|  ''\---/''  |   |                      
                  \  .-\__  `-`  ___/-. /                       
                ___`. .'  /--.--\  `. . ___                     
              ."" '<  `.___\_<|>_/___.'  >'"".               
            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 
            \  \ `-.   \_ __\ /__ _/   .-` /  /                
      ========`-.____`-.___\_____/___.-`____.-'========         
                           `=---='                              
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       
                     佛祖保佑    永无BUG                        
                   Code by duxu0711@163.com                     
////////////////////////////////////////////////////////////////*/

package cn.geekduxu.android;

import java.util.HashMap;
import java.util.Map;

/**
 * 在Android中模拟JavaWeb的Session
 * @author <a href="mailto://duxu0711@163.com">杜旭</a>
 */
public class Session {

	private static Session INSTANCE;
	
	private Map<String, Object> map;
	
	private Session(){
		map = new HashMap<String, Object>();
	}
	
	/**
	 * 获取Session对象
	 * @return Session对象的引用
	 */
	public static synchronized Session getSession(){
		if(null == INSTANCE){
			INSTANCE = new Session();
		}
		return INSTANCE;
	}
	
	/**
	 * 保存值到Session中
	 * @param key - 与指定值关联的键
	 * @param value - 与指定键关联的值 
	 */
	public void put(String key, Object value){
		map.put(key, value);
	}
	
	/**
	 * 获取Session中保存的对象
	 * @param key 要返回其关联值的键 
	 * @return 指定键所映射的值;如果不包含该键的映射关系,则返回null 
	 */
	public Object get(String key){
		return map.get(key);
	}
	
	/**
	 * 从Session中移除一个对象
	 * @param key 要移除对象的键 
	 * @return 删除的对象
	 */
	public Object remove(String key){
		return map.remove(key);
	}
	
	/**
	 * 清空Session
	 */
	public void clear(){
		map.clear();
	}
}
这样就可以在Android中简单模拟出JavaWebSession的效果,对于传递数据会方便很多。(示例中的代码并不严谨,在程序中使用的话需考虑异常等情况)

Android数据传递方法