这是一个理论问题!
我目前正在开发一个安卓应用程序。我想在那里收集数据,然后编辑 UI。但是当我等待完成数据收集时,我显然阻止了 UI 线程()。
所以问题是:如何使应用程序等待数据收集而不阻塞 UI 线程?带有应用程序符号和进度条的加载屏幕是否是一种选项?
编辑:为了清楚起见:我的数据收集在几个小数据获取中分开!
编辑2:我正在从互联网收集数据!
提前感谢!
声明一个 AsyncTask,然后只需在 AsyncTask 的预执行中显示 ProgressDialog。做耗时和应用程序冻结的事情,例如从doInBackground上的链接检索数据。在asyncTask的onPostExecute中检索到的帖子链接是否有效,并关闭"进度对话框"。AsyncTask 在与主活动不同的线程上运行,因此应用程序不会冻结。
异步任务
class ClassName extends AsyncTask<String, Void, Integer> {
protected void onPreExecute() {
progress = ProgressDialog.show(context, "", "Loading ...",
false, true);
}
@Override
protected Integer doInBackground(String... params) {
// Your Code
}
protected void onPostExecute(Integer result) {
if (progress != null) {
progress.dismiss();
}
}
}
您可以使用 AsyncTask 进行简单的数据获取。如果它使用更复杂 凌空抽射