Application在安卓中的应用


昨天学习了一下用volley通过get和post对网络进行操作,在里面提到了一个叫application这个类,在这类有他自己的生命周期,与web的application非常相似,从生命的开始到生命的结束,是一个全局的会话,作用域非常广,而且Android也提供了一个默认的调用,我们平时不用到他也不用管。当时我学习volley的时候他主要是为了创建volley对象,给他一个全局。后来我就想,既然是全局,那么我们是不是可以在里面存储一些我们公共的数据呢,免得到时写同样的方法,和参数。带着这疑问,我就开始我的操作了。

首先。我们自定义一个application的类,用于存储我们的数据

package com.example.aplicationdemo;

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

import android.app.Application;

public class MyApplication extends Application {
	private static Map<String, Object> map;

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		map = new HashMap<String, Object>();
	}

	public static Map<String, Object> getMap() {
		return map;
	}
}

至于在那个activity中存储数据,依情况而定,我为了演示,就放在了MainActivity中

package com.example.aplicationdemo;

import java.util.Map;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private EditText editText;
	private ImageView img;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		editText = (EditText) findViewById(R.id.txt);
		img = (ImageView) findViewById(R.id.img);
		findViewById(R.id.btn).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String edString = editText.getText().toString().trim();
				int imgs = R.drawable.tg;
				Map<String, Object> map = MyApplication.getMap();
				map.put("txt", edString);
				map.put("img", imgs);
				Intent intent = new Intent(getApplicationContext(), My.class);
				startActivity(intent);
			}
		});

	}

}

为了能更好的体验效果,我在另一个页面中获取数据

package com.example.aplicationdemo;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import android.app.Activity;
import android.media.Image;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class My extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.my);
		TextView t = (TextView) findViewById(R.id.t);
		ImageView img = (ImageView) findViewById(R.id.ig);
		Map<String, Object> map = MyApplication.getMap();
		//获取map的键
		Set<String> set = map.keySet();
		if (set != null) {
			Iterator<String> it = set.iterator();
			while (it.hasNext()) {
				String st = it.next();
				//对他的键进行匹配,以免导致数据匹配异常
				if (st.equals("txt")) {
					Object value = map.get(st);
					t.setText(value.toString());
				} else if (st.equals("img")) {
					Object value = map.get(st);
					int i = (int) value;
					img.setImageResource(i);
				}

			}
		}
		
	}
}
这是我的学习笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值