请问 如果在 activity 里边 实例化一个类,然后调用此类的函数get(),而这个函数是启动一个线程。 麻烦会的朋友帮忙回复,谢啦 比如: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); public class a { Message mes = mHandler.obtainMessage(3); } |
|
3分 |
Handler 通知回 Activity 数据下载完成
|
@u011070145 谢谢您的回复 麻烦再帮忙回复 请问 如果在 线程里边 给 类a的 list1 赋值了, 那么 activity 怎样才可以获得这个list的内容呢? 在 public class a { Message mes = mHandler.obtainMessage(3); } |
|
3分 |
1 在类a 中写个 方法 public List<> getList ….. return list
2 msg.obj = list; 在Activity中 获取出来 List = msg.obj |
3分 |
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线程 } }; } |
3分 |
来个简单的,类A单实例 随便在哪儿都能调用A的方法
|
@ birdsaction 谢谢您的回复 代码里边有以下三个文件: 即在 callback.onDone(1,2,3); 在这行报错。 在 Callback.java 代码如下: public interface Callback { public void onDone(int result, int msg, int errorCode); 在 test.java 代码如下: import android.util.Log; public class test extends Thread { 在 MainActivity.java 代码如下: public class MainActivity extends ActionBarActivity { test a = new test(callback); |
|
3分 |
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方法的外面,否则空异常。 |
@ birdsaction 非常感谢您的回复。 按您所说的,可以正常运行了。但是我还有不明白的地方,麻烦再回复下,谢啦 比如说 Callback 是一个接口, 是不能实例化的。但是Callback callback = new Callback() {} 这样写 new 能理解为实例化吗? 还有就是 |
|
3分 |
这个是基础啊,接口实例化可以这样写的,你可以去看看JAVA基础。
线程如果run方法执行结束的话,虚拟机会回收的。你没有写循环体,不会长期运行的,。 |
@ birdsaction 非常感谢您的回复。 还有个关于线程的问题,麻烦再帮忙回复下,谢谢啦 就是如果是线程间通信的话,那线程是怎么被处理的呢? 也就是什么时候会被回收。但是 既然是进程间通信,比如点击 比如代码可以这样写 进程间通信: protected void onCreate(Bundle savedInstanceState) { public void onItemClick(AdapterView<?>arg0,View arg1, int arg2,long arg3) { //arg2 is position private final Handler mHandler = new Handler() { break; default: Looper.prepare(); aThreadHandler = new Handler() { break;
|
|
2分 |
你这不是进程通信,只是线程通信。如果你自己创建的线程里面 创建了自己的loop(); 这个线程就不会被回收。
这个需要你自己处理,什么时候不用了。 |
@ birdsaction 非常感谢您的回复。 最后还想确认一个问题,麻烦再帮忙回复下,谢啦 protected void onStop() { |