2
A
回答
1
看一看在AsyncTask
類可以幫助你在另一個線程比UI線程處理的工作。這是一個非常有用的Android框架類。
您只需創建一個繼承自AsyncTask的自定義類,然後覆蓋doInBackground()
並插入應在其自己的線程中執行的代碼。在你的情況下,這將是執行下載的代碼。此外,您必須覆蓋在doInBackground()方法完成時自動調用的onPostExecute()
。您在doInBackground()方法中返回的對象將自動傳遞給onPostExecute()方法。 onPostExecute()將在UI線程上執行。
所以AsyncTask類將爲你處理所有線程的東西,你可以專注於你的工作。請參閱tutorial on the Android Developer site。
0
不用創建線程,創建一個Callable
並通過submit()
方法的方式將其傳遞給一個ExecutorService
:
Future<T> submit(Callable<T> task)
提交Callable
對象到ExecutorService
回報Future
對象。 Future
的get()
方法將阻塞,直到任務完成並將包含Callable
的結果。
例子:
Callable<String> callable = new Callable<String>(){
@Override
public String call() throws Exception {
return "HELLO WORLD";
}
};
//executor with one thread
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(callable);
executor.shutdown();
String result = future.get();
System.out.println(result);
1
如果 「主類」 你的意思是你Activity
那麼你可以使用一個Handler
。
在你的活動:
private static final int DOWNLOAD_COMPLETE = 0;
...
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case DOWNLOAD_COMPLETE:
Log.d("MYTAG",msg.obj.toString());
break;
}
}
}
而在一些其他類:
public doBackgroundUpdate(Handler handler){
Thread backgroundThread = new Thread() {
@Override
public void run() {
// do long-running post operation
// send result back to UI thread
Message msg = Message.obtain();
msg.what = DOWNLOAD_COMPLETE;
msg.obj = "Result String to pass";
handler.sendMessage(msg);
}
}
backgroundThread.start();
}
相關問題
- 1. 與主C++類的問題
- 2. GUI類和邏輯類之間的相互作用?
- 3. 業務邏輯,dbml和其他編譯類之間的交互問題
- 4. SQL - 問題與WHERE邏輯
- 5. 邏輯問題與JavaScript
- 6. 關於GUI與邏輯類
- 7. 計算兩次之間的時間差 - 邏輯問題
- 8. 關於線程邏輯的問題
- 9. 邏輯問題
- 10. 邏輯問題
- 11. 邏輯問題
- 12. 邏輯問題
- 13. 邏輯問題
- 14. 正確的OOP類邏輯的邏輯
- 15. DAL類的邏輯?
- 16. 線性時態邏輯問題
- 17. 兩個角度之間插值的邏輯問題?
- 18. 與語言無關的邏輯問題
- 19. 抽象類與錯誤的邏輯
- 20. 計算2個時間間隔之間的時間差 - 邏輯問題
- 21. 邏輯問題 - GWT
- 22. PHP邏輯問題
- 23. JavaScript邏輯問題
- 24. C++邏輯問題
- 25. Pygame邏輯問題
- 26. Android邏輯問題
- 27. C++邏輯問題
- 28. clearInterval邏輯問題
- 29. Javascript邏輯問題
- 30. C#邏輯問題
謝謝...但如何使它在兩個類?實施Callable。如何從主類獲得訪問權限? –
user547995
2011-01-28 08:58:19