当前位置: 代码迷 >> Android >> 请教 关于 类怎么跟activity 通信
  详细解决方案

请教 关于 类怎么跟activity 通信

热度:408   发布时间:2016-04-28 01:37:38.0
请问 关于 类如何跟activity 通信
请问   如果在 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(); 这个线程就不会被回收。
这个需要你自己处理,什么时候不用了。
  相关解决方案