请问 主线程发信息给 子线程 代码如下:
public class HistoryActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
mHttpApi = new HttpApi();
if(mHiThread == null) {
mHiThread= new HiThread();
mHiThread.start();
}
public getcodereturn(){
// 在这个函数 是实现 发送数据给 子线程的。根据不同的情况,有时候发送 a,有时候发送 c
// 如果发送信息 “a” 给 子线程, 这时候, 子线程 判断接收到的是 字符a, 就会 调用函数 get_a(); 以便处理相应的事情
// 如果发送信息 ”c“ 给子线程, 这时候,子线程 判断接收到的是字符b, 就会 调用函数 get_c();以便处理相应的事情
请问 要实现上面所说的, 代码上应该怎么写呢?(即包括 主线程怎么处理,子线程怎么处理) 麻烦会的朋友帮忙回复?
}
private final Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Log.d(TAG,"case 1 ");;
getcodereturn(); //主线程接受到子线程的 信息后, 就会调用 getcodereturn()
break;
default:
break;
}
super.handleMessage(msg);
}
};
private class HiThread extends Thread {
public void run() {
Log.i(TAG, "yong: BEGIN HistoryThread ");
try {
list1 = mHttpApi.tory(string);
Message mes = mHandler.obtainMessage(1);
mHandler.sendMessage(mes);
} catch ( Exception e) {
e.printStackTrace();
}
}
}
------解决思路----------------------
简单的定义全局变量不停刷新,子线程不停获取全局变量,难得aidl等
------解决思路----------------------
看看eventbus这个框架
------解决思路----------------------
发消息的话,你要在子线程中也处理消息
你上面定义的Handler是用于处理主线程的消息,那么同理,如果你想要子线程收到消息并处理,你就要实现子线程的Looper和Handler,你可以使用HandlerThread来实现。