Android 的Application(可在不同的类中进行数据的操作)

转自:http://blog.csdn.net/liangguo03/article/details/6860179

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


使用方法:

第一、实现自己的Applicaiton

[java]  view plain copy
  1. public class ApplicationContext extends Application {    
  2.     public static final int FLUSH_MAIN_ACTIVITY=1;    
  3.     private Handler main;    
  4.      
  5.     public void setMainHandler(Handler handler){    
  6.         main=handler;    
  7.     }    
  8.         
  9.     public void flushMain(){  
  10.         main.sendEmptyMessage(FLUSH_MAIN_ACTIVITY);    
  11.     }    
  12.     
  13. }   

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

[java]  view plain copy
  1. package com.sequel.text;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.Application;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9.   
  10. public class MainActivity extends Activity {  
  11.   
  12.     private int count = 0;  
  13.       
  14.     /** Called when the activity is first created. */  
  15.   
  16.     //定义Handler,    
  17.     Handler flushHandler = new Handler() {  
  18.         @Override  
  19.         public void handleMessage(Message msg) {  
  20.             switch (msg.what) {  
  21.             case ApplicationContext.FLUSH_MAIN_ACTIVITY:  
  22.                 //在这可进行想要的操作  
  23.                 operat();  
  24.                 break;  
  25.             default:  
  26.                 break;  
  27.             }  
  28.             super.handleMessage(msg);  
  29.         }  
  30.     };  
  31.   
  32.     private ApplicationContext appC;  
  33.   
  34.     @Override  
  35.     public void onCreate(Bundle savedInstanceState) {  
  36.         super.onCreate(savedInstanceState);  
  37.         setContentView(R.layout.main);  
  38.   
  39.         appC = (ApplicationContext) getApplication();  
  40.         //注册Handler  
  41.         appC.setMainHandler(flushHandler);  
  42.           
  43.         try {  
  44.             Thread.sleep(2000);  
  45.         } catch (InterruptedException e) {  
  46.             // TODO Auto-generated catch block  
  47.             e.printStackTrace();  
  48.         }  
  49.         startActivity(new Intent(MainActivity.this,SecondActivity.class));//启动另一个Activity  
  50.     }  
  51.       
  52.       
  53.     public void operat(){  
  54.         //.....  
  55.         System.out.println(count++);  
  56.     }  
  57. }  

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

[java]  view plain copy
  1. import android.app.Activity;  
  2. import android.app.Application;  
  3. import android.os.Bundle;  
  4. import android.os.Handler;  
  5. import android.os.Message;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9.   
  10. public class SecondActivity extends Activity {  
  11.   
  12.     /** Called when the activity is first created.*/  
  13.   
  14.     private ApplicationContext appC;  
  15.     private Button button;  
  16.   
  17.     @Override  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.second);  
  21.           
  22.         button = (Button) findViewById(R.id.requestButton);  
  23.           
  24.         button.setOnClickListener(new OnClickListener() {  
  25.               
  26.             @Override  
  27.             public void onClick(View v) {  
  28.                 // TODO Auto-generated method stub  
  29.                 //这就是调用方法  
  30.                 appC.flushMain();  
  31.             }         
  32.                   
  33.         });  
  34.         appC = (ApplicationContext) getApplication();  
  35.   
  36.     }  
  37. }  

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

[java]  view plain copy
  1. <application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationContext">  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值