Hanlder SendMessage 如何发送字符串或消息
2014-12-05 20:40
316 查看
首先简单说下SendMessage 与 obtainMessage() 的区别:
SendMessage 每次都要New一个新的对象,相对obtainMessage()虽然体会不到快慢,但是确实多占用内存,所以推荐使用Handler.obtainMessage()
package com.suchuanhong.study;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
public class MainActivity extends Activity {
private Thread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyThread mythread=new MyThread();
thread=new Thread(mythread);
thread.start();
}
public static Handler connHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
int arg1 = msg.arg1;//获取int类型消息或标志
String string1 = msg.getData().getString("time");//获取字符串
Log.i("sunzn", String.valueOf(arg1));
Log.i("sunzn", string1);
}
};
class MyThread implements Runnable
{
@Override
public void run() {
while(true)
{
try {
Thread.sleep(1000);
Message message=connHandler.obtainMessage();
Bundle bundle=new Bundle();
bundle.putString("time", "senOK"); //将字符串装载到bundle
message.setData(bundle);//通过setData将字符串发送
connHandler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
SendMessage 每次都要New一个新的对象,相对obtainMessage()虽然体会不到快慢,但是确实多占用内存,所以推荐使用Handler.obtainMessage()
package com.suchuanhong.study;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
public class MainActivity extends Activity {
private Thread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyThread mythread=new MyThread();
thread=new Thread(mythread);
thread.start();
}
public static Handler connHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
int arg1 = msg.arg1;//获取int类型消息或标志
String string1 = msg.getData().getString("time");//获取字符串
Log.i("sunzn", String.valueOf(arg1));
Log.i("sunzn", string1);
}
};
class MyThread implements Runnable
{
@Override
public void run() {
while(true)
{
try {
Thread.sleep(1000);
Message message=connHandler.obtainMessage();
Bundle bundle=new Bundle();
bundle.putString("time", "senOK"); //将字符串装载到bundle
message.setData(bundle);//通过setData将字符串发送
connHandler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
相关文章推荐
- [VC]SendMessage和PostMessage发送消息(不同进程传递字符串)
- SendMessage和PostMessage发送消息(不同进程传递字符串)
- 如何正确使用SendMessage进行发送消息
- 如何用sendmessage(postmessage)往webbrowse里发送鼠标消息
- 如何调用NetMessageBufferSend发送消息?(改编)
- SQL如何向应用程序发送消息?
- 如何向所有的资源管理器窗口发送刷新消息
- 使用SendMessage方法对窗体上的控件进行截图,该方法的思想就是把控件的句柄拿到,对控件发送WM_PAINT消息,并且把希望得到图形对象的句柄当作wParam参数传过去,这样就可以在图形对象得到想要得图形。
- 发送消息和字符串转化操作
- vb利用FindWindow,GetWindowText,SendMessage查找程序并发送最小化消息
- 如何跨进程发送字符串?(收藏)
- 如何使用SendMessage自定义消息函数(VC实例)
- Delphi窗体间发送消息或字符串
- 如何调用NetMessageBufferSend发送消息?(改编)
- Delphi窗体间发送消息或字符串
- 应用程序间发送消息 c# SendMessage WM_COPYDATA
- 如何用SendMessage()函数传递字符串
- 如何利用jgroups实现分布式环境下消息的接受和发送
- 如何给另一个桌面的程序发送消息?
- 只能用SendMessage发送消息WM_CopyData的分析