【问题标题】:Can i make a thread which run after every 5 sec and update a views value in android?我可以创建一个每 5 秒运行一次的线程并更新 android 中的视图值吗?
【发布时间】:2012-08-10 13:17:22
【问题描述】:
我正在 android 中创建一个线程,每 5 秒更新一次视图值。但是我得到了这个异常:-
"E/AndroidRuntime(30793): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views."
还有其他方法可以做到这一点吗?
【问题讨论】:
标签:
android
multithreading
exception
【解决方案1】:
您正在使用线程来更新 UI。
1.使用处理程序Handler从线程更新UI
2 也可以使用AsyncTaskonProgressUpdate(Progress...) 来更新ui,
【解决方案2】:
您可以有一个 Timer Task 来获取值(线程可以这样做)并使用处理程序将值传递给 UI 线程。只能从主/ UI 线程更新视图。
【解决方案3】:
好吧,尝试在后台线程中使用递归函数并在函数结束时等待。
【解决方案4】:
您可以为此使用 Handler :
处理程序句柄 = null;
可运行可运行 = null;
在 onCreate(){ // 方法中
handler = new Handler();
handler.post(runnable);
runnable = new Runnable(){
无效运行(){
handler.postDelayed(runnable,1000);// run will be call in every 1 seconds
// your code here to implement it will execute in every i second
}
}
}