Android 的Application之一 ---- 在不同的类(Activity界面)中进行数据的操作

来源:互联网 发布:网络视频报警器 编辑:程序博客网 时间:2024/04/29 03:55

        有时候我们需要在Activity之外的类中修改Activity中的数据或是UI, 或者是要在自定义的类中要修改其它类中的值。这时候就变的很麻烦!这时候我们就需要一个全局的容器,来存放要共享的数据,就像J2EE中的Session。 当然,Android设计者肯定也考虑到了这一点。进入正题-----> Application(注: 本节只简单介绍一下使用方法,相信天才的码农们举一反三)


使用方法:

        第一、实现自己的Applicaiton

 

public class ApplicationContext extends Application {      public static final int FLUSH_MAIN_ACTIVITY=1;      private Handler main;         public void setMainHandler(Handler handler){          main=handler;      }            public void flushMain(){        main.sendEmptyMessage(FLUSH_MAIN_ACTIVITY);      }    } 


        第二、在Activity中定义Handler  ,并注册Handler

 

package com.sequel.text;import android.app.Activity;import android.app.Application;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;public class MainActivity extends Activity {private int count = 0;/** Called when the activity is first created. *///定义Handler,  Handler flushHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case ApplicationContext.FLUSH_MAIN_ACTIVITY://在这可进行想要的操作operat();break;default:break;}super.handleMessage(msg);}};private ApplicationContext appC;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);appC = (ApplicationContext) getApplication();//注册HandlerappC.setMainHandler(flushHandler);try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}startActivity(new Intent(MainActivity.this,SecondActivity.class));//启动另一个Activity}public void operat(){//.....System.out.println(count++);}}


        第三、调用方法----在SecondActivity中进行操作

 

import android.app.Activity;import android.app.Application;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class SecondActivity extends Activity {/** Called when the activity is first created.*/private ApplicationContext appC;private Button button;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second);button = (Button) findViewById(R.id.requestButton);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//这就是调用方法appC.flushMain();}});appC = (ApplicationContext) getApplication();}}


        第四、千万不要以为这就完事大吉了! 一定要在AndroidManifest.xml中注册你自己定义的Application

 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationContext">