Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android:Activity數據傳遞之全局對象(application)

android:Activity數據傳遞之全局對象(application)

編輯:關於android開發

android:Activity數據傳遞之全局對象(application)


在activity之間數據傳遞中還有一種比較實用的方式,就是全局對象application

 

Application和Activity,Service一樣是Android框架的一個系統組件,當Android程序啟動時系統會創建一個Application對象,用來存儲系統的一些信息。

Android系統自動會為每個程序運行時創建一個Application類的對象且只創建一個,所以Application可以說是單例(singleton)模式的一個類。

通常我們是不需要指定一個Application的,系統會自動幫我們創建,如果需要創建自己的Application,那也很簡單!創建一個類繼承Application並在AndroidManifest.xml文件中的application標簽中進行注冊(只需要給application標簽增加name屬性,並添加自己的 Application的名字即可)。

啟動Application時,系統會創建一個PID,即進程ID,所有的Activity都會在此進程上運行。那麼我們在Application創建的時候初始化全局變量,同一個應用的所有Activity都可以取到這些全局變量的值,換句話說,我們在某一個Activity中改變了這些全局變量的值,那麼在同一個應用的其他Activity中值就會改變。

Application對象的生命周期是整個程序中最長的,它的生命周期就等於這個程序的生命周期。因為它是全局的單例的,所以在不同的Activity,Service中獲得的對象都是同一個對象。所以可以通過Application來進行一些,如:數據傳遞、數據共享和數據緩存等操作。

除非是android應用程序清除內存,否則全局對象將一直可以訪問。

通過下面這個例子了解一下全局變量

新建一個MyApplication類並使其繼承Application

 

package com.example.activity;

import java.util.HashMap;

import android.app.Application;

public class MyApplication extends Application{
	/*
	 * 創建一個map集合
	 * */
	private static HashMap map=new HashMap();
	private static MyApplication application;
	/*
	 * 返回application
	 * */
	public static MyApplication getApplication(){
		return application;
	}
	/*
	 * 返回map集合
	 * */
	public static HashMap getMap(){
		return map;
	}
	/*
	 * 對於一個應用來說 android入口並不是Activity中的OnCreate()而是Application裡面的Oncreate()
	 * 也就相當於是java中的Main方法,只不過這個方法被封裝了
	 * */
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		//在Application創建時,讀取Application
		application=this;
	}
}
並且在AndroidManifest.xml中為我們創建的MyApplication配置一下
   

 

在MainActivity中添加一個按鈕 並為其添加監聽事件,點擊後跳轉到OtherActivity

點擊事件的代碼

 

				Intent intent=new Intent();
				intent.setClass(MainActivity.this, OtherActivity.class);
				MyApplication app=MyApplication.getApplication();
				app.getMap().put("姓名", "蘇蘇");
				app.getMap().put("星座", "雙魚座");
				startActivity(intent);
點擊按鈕後跳轉到OtherActivity ,並在Activity中輸出Map集合中的對象

 

 

Toast.makeText(OtherActivity.this,
				app.getMap().get("姓名")+" "+app.getMap().get("星座"), Toast.LENGTH_LONG).show();

當然了 在這個OtherActivity被銷毀時 為了節省內存 我們需要從map中移出我們的對象

 

 

	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		app.getMap().remove("姓名");
		app.getMap().remove("星座");
	}

就這麼簡單 下面附上運行結果

 

\\

 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved