在activity之间传递handler(二)
来源:互联网 发布:ubuntu java环境搭建 编辑:程序博客网 时间:2024/06/11 23:48
续 “在activity之间传递handler(一)”~
部分转自 http://www.devdiv.com/home.php?mod=space&uid=166195&do=blog&quickforward=1&id=42912
如果把handler定义为static,它的子成员变量和子方法都要是static属性。一旦activity接收到handler,要处理的事件变多,则大量的变量和函数都成为static类型了,这样非常不利于代码的独立性和隐私性。这是我在研究安卓系统蓝牙通信技术时遇到的问题,所以要考虑用其它的方式在activity之间传递handler。
用定义application的方式传递handler可以保持代码的独立性,方法步骤如下。要传递handler的activity为FirstActivity和SecondActivity。
1.定义自己的application,并在manifest.xml文件中申明。
public class CustomApplication extends Application{ private static final String VALUE = "Harvey"; private String value; private Handler mHandler; @Override public void onCreate() { super.onCreate(); setValue(VALUE); // 初始化全局变量 } public void setValue(String value) //该方法用于测试application的功能特性 { this.value = value; } public String getValue() { return value; } //该方法用于保存要传递的handler public void setHandler( Handler handler) { this.mHandler = handler; } //该方法用于获取要传递的handler public Handler getHandler() { return mHandler; }}
在manifest.xml文件中,只要改application,确切地说只要加上应用名称就可以了。
android:name = "CustomApplication"
2.在FirstActivity中定义handler,并重写handleMessage方法。
private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case REQUEST_CODE: Log.e("handler","The message from the SecondActivity is: " + msg.obj.toString()); } } };
然后用前面定义的application保存定义的mHandler。
app.setHandler( mHandler );
3.在SecondActivity中获取mHandler,并用该handler获取message发送回target 即 FirstActivity。
mHandler = app.getHandler();String str = "message about handler in the SecondActivity";mHandler.obtainMessage(FirstActivity.REQUEST_CODE, 2, 3, str).sendToTarget();
4.在FirstActivity里面会接收到消息。
附:
前面的程序中,在FirstActivity里面改变CustomApplication中变量value的值,在SecondActivity中,该值也改变。原来是因为: Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
另外,application是在activity之前加载的,程序运行就会加载application的程序。
源码 http://download.csdn.net/download/sherry_up/9400052
- 在activity之间传递handler(二)
- 在activity之间传递handler(一)
- 在activity之间传递handler(三)
- Activity之间传递Handler
- Activity之间传递参数(二)
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler
- 在Activity之间传递对象
- 在Activity之间传递参数
- 在Activity之间传递数据
- Activity和fragment之间传递数据(二)
- 在两个Activity之间传递IntArray(整形数组)
- Activity和Service之间通过handler传递数据
- android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler&利用broadcast广播机制
- Intent和在Activity之间传递信息
- Android 在两个 Activity 之间传递数据
- android 在activity之间传递复杂数据类型
- iOS 开发 Pch 文件的正确使用(转载)
- Apache Apollo入门指南
- MyEclipse有关propedit editor插件的相关问题
- 如何使用gdb给某个模块(文件)的所有函数下断点
- JS中的prototype属性------阿冬专栏!!!
- 在activity之间传递handler(二)
- 服务器时间没同步.---ntpdate
- Ucenter的用户注册和登录分析
- WIN10 64bit python3.4 安装 numpy scipy matplotlib
- linux_换行转换
- iOS开发中,__attribute__ 使用场景
- CheatSheet – 显示当前程序快捷键列表[Mac]
- 基于EF4.1的异构数据库访问组件
- 《Contrast Limited Adaptive Histogram Equalization》