线程 结束的时候 发一个handlemessage给主线程就可以了

解决方案 »

  1.   

    android里面充斥着大量的消息通知和事件回调,试着上网多搜一些代码来理解它的精髓吧。Android里面子线程把状态传递到Main线程,大概有三种方式吧:1 是事件通知。这只是一种设计,java本身就支持的,不需要android。
    public void runAsync(final XXXListener listener){
      new Thread(){
        public void run(){
          // do something
          listener.onXXX();
          // do something
        }
      }.start();
    }
    // 在Main线程调用
    runAsync(new XXXListener(){
      public void onXXX(){
        // 这里就是事件通知了
        // 不过这里的代码是在子线程里直接掉的,如果想直接操作UI是不行的,需要配合handler之类的试用。所以说着只是一种设计,不是android特性
      }
    });2 消息。比如用handler
    private static handler = new Handler();
    public void runAsync(){
      new Thread(){
        public void run(){
          // do something
          handler.sendMessage(xxxxxx);
          // do something
        }
      }.start();
    }// 在Main线程调用
    handler = new Handler(){
      protected void handlerMessage(Message msg){
        // 这里就是从子线程来的消息回调了,而且会在main线程里执行
      }}
    runAsync();3 广播
    广播类似于消息通知,查下代码看怎么写吧。
    以上代码全屏感觉写,写错了也正常,莫怪。就为表达那么个意思。
      

  2.   

    handler或者全局的变量都可以的
      

  3.   

    这本来就应该是一个异步的回调,使用Handler可以,另外,如果你修改Download的代码,使用AsyncTask会比较简单(前提是你能明白使用AsyncTask).简单的使用方法你可以看我的博客[http://blog.csdn.net/acidsweet/article/details/24987077]
      

  4.   

    异步回调任务:public void onRefresh() {
        new GetRefreshDataTask().execute();
    }private class GetMoreDataTask extends AsyncTask<Void,Void,ArrayList>{ @Override
    protected ArrayList doInBackground(Void... params) {
    // TODO Auto-generated method stub
    try {
    Thread.sleep(4000);
    } catch (InterruptedException e) {
    }
    return items;
    } @Override
    protected void onPostExecute(ArrayList result) {
    getmoreList();
    adapter.notifyDataSetChanged(); // Call onRefreshComplete when the list has been refreshed.
    onLoad(); super.onPostExecute(result);
    }

    }
      

  5.   

    1,推荐用AsyncTask,简单易用.写好了doInBackground的方法(就是你想在线程怎么处理),还有返回结果的方法.你扔个回调函数进去就可以了.
    2. 如果自己new一个Thread,可以加个handler,来处理新开线程后消息的返回.