Handler的总结

来源:互联网 发布:什么布吸水性最好 知乎 编辑:程序博客网 时间:2024/05/20 19:32

handler的使用情况:

1、出现网络连接交互问题是,使用handler处理。

2、在出现数据传输的时候,运用handler处理

3、在处理子线程上问题是,只能运用handler处理数据上的传输,把需要进行的业务处理问题传到主线程上处理。

...


主要进行第3点解释:

在运行android程序是,开始启动一个主线程,当有一个Runnable运行是,会相应的开启一个子线程,如果想要在子线程上进行相应的业务处理,如Toast输出操作时,会发现输出不出来,现在的问题是,你需要用handler把相应的业务处理转到主线程上进行(即你的当前运行的Activity上)

但是你会面临的是问题是,如果你生命的Runnable不是在你的Activity内部,而是单独的声明了一个类上,你现在需要把当前的handler声明为静态static的,才能解决问题。

如下代码:

再同一个Activity下实现:

public class MyTestActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);runnable.run();}Handler myHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);Bundle bundle = msg.getData();//可以拿到绑定的数据,进行相应的业务处理Toast.makeText(MyTestActivity.this, "相应的业务处理", Toast.LENGTH_SHORT).show();}};Runnable runnable = new Runnable() {@Overridepublic void run() {Message message = new Message();Bundle bundle = new Bundle();//bundle 可以相应的绑定所需要传输的数据message.setData(bundle);myHandler.handleMessage(message);}};}


在不同类下实现:

package org.androidpn.handler;import android.os.Bundle;import android.os.Message;public class MyRunnable implements Runnable{@Overridepublic void run() {Message message = new Message();Bundle bundle = new Bundle();//bundle 可以相应的绑定所需要传输的数据message.setData(bundle);MyTestActivity.myHandler1.handleMessage(message);}}
<pre name="code" class="java">public class MyTestActivity extends Activity {private static Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);context = this;runnable.run();}public <span style="color:#ff0000;">static</span> Handler myHandler1 = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);Bundle bundle = msg.getData();// 可以拿到绑定的数据,进行相应的业务处理Toast.makeText(context, "相应的业务处理", Toast.LENGTH_SHORT).show();}};}

问题应该解决清楚了。



0 0
原创粉丝点击