Android 独立线程更新UI中的长时间运行进程
我注意到了点网的一个类似问题,但我的问题是Android,所以可能解决方案看起来不同 该过程通过单击按钮激活。该进程作为UI线程的一部分运行,并在最后更新UI。我添加了进度对话框,使其更加用户友好,因此我实例化了一个运行进程的线程,最后它更新了UI并取消了进度对话框。很遗憾,UI更新失败,出现以下异常:Android 独立线程更新UI中的长时间运行进程,android,long-running-processes,Android,Long Running Processes,我注意到了点网的一个类似问题,但我的问题是Android,所以可能解决方案看起来不同 该过程通过单击按钮激活。该进程作为UI线程的一部分运行,并在最后更新UI。我添加了进度对话框,使其更加用户友好,因此我实例化了一个运行进程的线程,最后它更新了UI并取消了进度对话框。很遗憾,UI更新失败,出现以下异常: 07-19 21:14:04.602: ERROR/Atjeews(283): android.view.ViewRoot$CalledFromWrongThreadException: Onl
07-19 21:14:04.602: ERROR/Atjeews(283): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
如果我试图阻止UI线程,并在更新UI的长过程完成后释放它,则不会显示进度对话框。我应该尝试在单独的线程中显示进度对话框,还是有另一个更简单的解决方案?请查看Android开发者页面中的: 为了解决这个问题,Android提供了几种从其他线程访问UI线程的方法。下面列出了一些可以提供帮助的方法: Activity.runOnUiThread(可运行)
View.post(可运行)
View.postDelayed(可运行,长)
您只需实例化一个匿名Runnable作为参数,如
post(new Runnable(){doWhatever();})
,它将在UI线程上执行任何您想要的操作。@Dmitriy R我建议您在android中使用AsyncTask来执行Ripper所说的检查链接的工作,以确保您能够解决问题。抱歉,因为我的名声不好,系统不允许我做这些事情。嗯,听起来系统好像出了问题。你的声望超过了投票所需的15。此外,我相信你可以接受一个答案,即使只有一个代表。你应该和别人谈谈这一点(也许在元或其他什么),因为它会损害你获得有用答案的机会。