gpt4 book ai didi

android - Android 中的观察者模式

转载 作者:行者123 更新时间:2023-11-29 15:33:09 25 4
gpt4 key购买 nike

我有一个问题。
1. 我有两个线程:'worker' 和 'UI' 线程。
2. Worker一直在等待服务器的数据,当收到数据时通知UI线程。
3. 更新 UI 在屏幕上显示 Toast 消息。

第 3 步是问题所在:

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

使用 mHandler,runOnUIThread 减慢了 UI 线程(UI 显示 webview),因为我必须不断检查来自服务器的数据。

最佳答案

使用 AsyncTask 来实现它。覆盖 doInBackground 以获取数据(它在单独的线程上执行),然后覆盖 onPostExecute() 以显示 toast(它在 UI 线程上执行)。

这是一个很好的例子 http://www.screaming-penguin.com/node/7746

这里是 official docs .

UPD:关于如何处理部分进度的示例。

    class ExampleTask extends AsyncTask<String, String, String>{

@Override
protected String doInBackground(String... params) {
while(true){
//Some logic on data recieve..
this.publishProgress("Some progress");
//seee if need to stop the thread.
boolean stop = true;
if(stop){
break;
}
}
return "Result";
}

@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
//UI tasks on particular progress...
}
}

关于android - Android 中的观察者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com