Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 独立线程更新UI中的长时间运行进程_Android_Long Running Processes - Fatal编程技术网

Android 独立线程更新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

我注意到了点网的一个类似问题,但我的问题是Android,所以可能解决方案看起来不同

该过程通过单击按钮激活。该进程作为UI线程的一部分运行,并在最后更新UI。我添加了进度对话框,使其更加用户友好,因此我实例化了一个运行进程的线程,最后它更新了UI并取消了进度对话框。很遗憾,UI更新失败,出现以下异常:

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。此外,我相信你可以接受一个答案,即使只有一个代表。你应该和别人谈谈这一点(也许在元或其他什么),因为它会损害你获得有用答案的机会。