標籤:
昨天學習了一下用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;@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.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;@Overrideprotected 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() {@Overridepublic 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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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);}}}}}這是我的學習筆記。
Application在安卓中的應用