请问 如果在 activity 里边 实例化一个类,然后调用此类的函数get(),而这个函数是启动一个线程。
请问 要怎么处理 才能 告知 activity 这个线程已经把数据取下来了呢?
麻烦会的朋友帮忙回复,谢啦
比如:
public class ArticleDetailActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
。。。。。
ma = new a();
a.get();
}
public class a {
public get () {
。。
if(mDetailThread == null) {
mDetailThread = new DetailThread();
mDetailThread.start();
}
。。。
}
private class ArticleDetailThread extends Thread {
public void run() {
Log.i(TAG, "yong: BEGIN ArticleDetailThread ");
try {
。。。
list1 = mHttpApi.detail(string,id);
。。。。。。。。。。。。。。。。。
Message mes = mHandler.obtainMessage(3);
mHandler.sendMessage(mes);
} catch ( Exception e) {
e.printStackTrace();
}
}
}
}
------解决思路----------------------
Handler 通知回 Activity 数据下载完成
------解决思路----------------------
1 在类a 中写个 方法 public List<> getList ..... return list
2 msg.obj = list; 在Activity中 获取出来 List = msg.obj
------解决思路----------------------
interface Callback {
public void onDone(Object result, String msg, int errorCode);
}
public class A extends Thread {
Callback callback;
public A(Callback callback){
this.callback = callback;
}
public void run() {
//做完事情回调一下函数
callback.onDone(xxx,xxx,xxx);
}
}
class MyActivity extends Activity {
public void onCreate() {
A a = new A(callback);
a.start();
}
Callback callback = new Callback() {
public void onDone(Object result, String msg, int errorCode) {
//可以处理UI数据,用UI线程
}
};
}
------解决思路----------------------
来个简单的,类A单实例 随便在哪儿都能调用A的方法
------解决思路----------------------
Callback callback = new Callback() {
// public void onDone(Object result, String msg, int errorCode) {
public void onDone(int result, int msg, int errorCode) {
//可以处理UI数据,用UI线程
Log.d(TAG,"++: ondone result="+result);
}
};
这个代码要放到 test a = new test(callback);前面,或者放到onCreate方法的外面,否则空异常。
------解决思路----------------------
这个是基础啊,接口实例化可以这样写的,你可以去看看JAVA基础。
线程如果run方法执行结束的话,虚拟机会回收的。你没有写循环体,不会长期运行的,。
------解决思路----------------------
你这不是进程通信,只是线程通信。如果你自己创建的线程里面 创建了自己的loop(); 这个线程就不会被回收。
这个需要你自己处理,什么时候不用了。