有沒有辦法在非UI線程中進行UI更改?簡短的問題。在非UI線程中做一些Android UI的東西
8
A
回答
5
如果你不想使用的AsyncTask,嘗試在您的主要活動有一個內部類(ResponseHandler所)觀察者模式,對不起,我不可能得到格式正確的但是我相信你的想法
public class WorkerThread extends Observable implements Runnable {
public void run() {
try {
DoSomething();
String response = "Doing something";
setChanged();
notifyObservers(response);
DoSomethingElse();
String response = "Doing something else";
setChanged();
notifyObservers(response);
}
catch (IOException e) {
e.printStackTrace();
}
}
private void DoSomething(){
}
private void DoSomethingElse(){
}
public class MainActivity{
public class ResponseHandler implements Observer {
private String resp;
public void update (Observable obj, Object arg) {
if (arg instanceof String) {
resp = (String) arg;
//Write message to UI here ie System.out.println("\nReceived Response: "+ resp);
//or EditText et = (EditText)findViewById(R.id.blah);
// blah.SetText(resp);
}
}
}
private void doStuffAndReportToUI(){
final WorkerThread wt = new WorkerThread();
final ResponseHandler respHandler = new ResponseHandler();
wt.addObserver(respHandler);
Thread thread = new Thread(wt);
thread.start();
}
5
有很多方法可以做到這一點,使用AsyncTask or Threads。簡短的回答。
提示:用戶界面的東西可以在預postExecute/runOnUiThread/Handler類
1
9
要麼使用Handler,或者使用下面的代碼
runOnUiThread(new Runnable()
{
@Override
public void run()
{
// Ui Stuff here
}
});
0
0
我試過+ tmho的答案,但它仍然給這個錯誤:
E/AndroidRuntime(****): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
我終於結束了+ ingsaurabh方式combinning它,像:
private class ResponseHandler implements Observer, Runnable {
Activity act;
public ResponseHandler(Activity caller) {
act = caller;
}
@Override
public void update (Observable obj, Object arg) {
act.runOnUiThread(this);
}
@Override
public void run() {
//update UI here
}
}
謝謝你們倆。
相關問題
- 1. 從非UI線程訪問UI線程
- 2. Android,非UI線程中的異常
- 3. kivy或別的東西爲UI UI
- 4. 確保WPF中的UI線程上運行的東西
- 5. ASP .NET AJAX UI的東西
- 6. 線程Android在UI線程
- 7. 從非UI線程
- 8. 如果存在的東西做一些
- 9. Application.GetResourceStream在非UI線程
- 10. Android - 非UI線程的外屏繪圖
- 11. Android UI線程
- 12. 非UI線程上的DispatcherObject
- 13. sendBroadcast通過UI或非UI線程?
- 14. 非UI線程修改UI組件
- 15. Android:更新UI線程非常快
- 16. 在非UI線程中構造視圖並在UI線程中使用
- 17. ProgressDialog顯示在非UI線程中
- 18. 在非UI線程中處理錯誤
- 19. UI Media UI上的Android MediaPlayer線程
- 20. Asynctask從非UI線程
- 21. 如何在Android UI線程
- 22. Android:在非UI線程中動態註冊我的接收器
- 23. 與UI線程的Android RMI
- 24. 線程塊我的Android UI
- 25. 如何從iOS中的非UI線程更新UI標籤
- 26. 如何停止UI添加東西的時候到UI
- 27. 在非UI線程中運行代碼android
- 28. Silverlight和回調在非UI線程
- 29. 在非UI控件創建線程
- 30. 移動到主線程在非UI類
嗯,基本的問題是,該線程是在我的主要活動以外的其他類中,並且它正在做一些無限循環(套接字等)。 – Knobik 2011-06-05 05:27:25