在Android-Studio
它警告我主线程负载过多之后。
跳过 113 帧:应用程序可能在其主线程上做了太多工作
我创建了一个 runnable 来启动一个带有一些进程的线程:
new Thread(new Runnable() {
@Override
public void run() {
UpdateUI(); //Actualiza datos de la Interfaz de usuario
}
}
但它返回错误:
只有创建视图层次结构的原始线程才能接触其视图。
我已经搜索过了,你可以启动一个线程
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//Cambiar controles
}
});
但是由于我必须做很多检查,否则同时执行一个线程,它会返回主线程重载。我什至注意到侧面菜单在关闭时会变慢。
您如何创建一个线程但能够访问界面元素以修改其数据或状态?
要修复错误:
您可以诉诸
runOnUIThread
或AsyncTask
取决于要执行的任务,如果它需要大量的过程直接AsyncTask
runOnUiThread运行一个可以访问界面元素的线程:
异步任务
要执行消耗大量的任务,并让用户了解该过程并在最后刷新 UI:
doInBackground
作业上以下允许您与 UI 元素进行交互
onProgressUpdate
报告您的进度onPostExecute
最后刷新UI 。异步任务示例:
一些建议
我有一个类似的问题,并在事件处理程序代码中的这个例子中解决了它: