是否支持Android异步任务

时间:2015-09-17 06:54:54

标签: android asynchronous android-asynctask

在我的Android应用程序中,我需要执行一些操作,比如在内部存储中创建一些文件,并在应用程序启动时从服务器下载一些数据。只有完成这些操作后,应用程序的其余部分才能正常工作。因此,我打算在打开应用程序时显示图像和进度条,在完成所有这些操作后,将打开一个新活动。

现在,我知道将可能长时间运行的操作(例如下载和文件读/写)放入异步任务中是很常见的。但是,就我而言,在这些操作完成之前我无法继续,所以我是否需要使用异步任务,或者在这种情况下应用程序是否可以阻止?

或者我应该使用get()方法启动异步任务然后等待它吗?

感谢您的建议,我真的很想以正确的方式做到这一点。

2 个答案:

答案 0 :(得分:1)

需要将其置于异步任务或其他线程中。主ui线程上的Internet请求将在最新的(android 4+)系统上产生致命错误。

显示加载图像或进度对话框总是比显示悬挂的白色屏幕更好。

对于所有长时间阻止作业,需要异步。

如果您将启动画面作为主要活动,请为异步任务添加此代码:

 private class YourTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         //Do your work here
         //Note that depending on the type of work, you can change the parameters
         //of the async task.
         return count;
     }

     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }

     protected void onPostExecute(Long result) {
         //Put here the code when your job is done, for example:
         //start a new activity (your real main activity).
     }
 }

之后,在活动的oncreate方法中,调用

 new YourTask ().execute(url1, url2, url3);

答案 1 :(得分:1)

你关心创建一个应该是你的启动器活动的启动活动。

然后在splah中,启动一个异步任务下载和所有,然后在完成任务后,您可以移动到您想要的活动。

您也可以使用线程来实现此目的;在这种情况下,您需要使用处理程序或runOnUIThread机制来处理任务完成回调。

最好为此使用Async任务。