主线程异常的android多线程和网络;

时间:2012-07-10 08:57:44

标签: android

考虑我从服务器获取数据并在列表视图中将其发布到UI的情况,但这是一项活动,它永远不会停止。

taskA{ //fetches data over network

if(!update)
    fetch();//network operation

}

taskB{//using this data UI is updated at runtime just like feed.

if(update)
    show();//UI operation
}

taskA在完成taskB之后首先启动,那时A正在睡觉,反之亦然,现在我面临的问题是:

  1. 两个操作都必须在工作线程中
  2. 这两项行动都在进行,直到活动开始。
  3. 如果使用handler将UI操作发布到主线程,则taskB似乎停止。
  4. 有人可以建议我设计一下吗?

3 个答案:

答案 0 :(得分:2)

AsyncTask正在为你做这份工作。您可以将其作为Activity主类下的内部类。

  

http://developer.android.com/reference/android/os/AsyncTask.html

示例代码

private class YourTask extends AsyncTask<URL, Integer, String> {
     protected String doInBackground(URL... urls) {
         // Fetch Data (Task A)
         return "Result";
     }

     protected void onProgressUpdate(Integer... progress) {
         // Show progress
     }

     protected void onPostExecute(String result) {
         // Show UI after complete (Task B)
     }
}

答案 1 :(得分:0)

AsyncTask正是您正在寻找的。查看此链接以获取一些示例代码: http://geekjamboree.wordpress.com/2011/11/22/asynctask-call-web-services-in-android/

答案 2 :(得分:0)

您也可以使用IntentService查看一些sample code

Android服务很轻巧,但设置起来比较复杂。

AsyncTask非常简单但不推荐,因为它有许多缺点和缺陷。 您也可以查看Loaders,但这并不像AsyncTasks那么容易。