我对API 15及更高版本上的新片段感到有点困惑。我一直在开发旧的API 10姜饼版本。我通过使用AsyncTask
下载主要活动数据并将其存储到内部存储中来获取所需数据的方法,然后使用另一个AsyncTask
来填充我的列表视图。
现在我决定从API 15 Master Detail Flow开始构建一个新应用程序,它从Fragment Activity和Fragment开始,这对于手机和平板电脑来说有点酷。所以我的问题是使用旧方法AsyncTask
它是否仍然可行或者建议使用其他方法下载数据并填充listview ??
答案 0 :(得分:1)
始终建议任何版本的API使用单独的线程(在本例中为AsyncTask doInBackground方法)来执行长时间运行的任务,例如从Internet下载数据。
答案 1 :(得分:0)
你肯定想在他们自己的线程上剥离慢任务。但请注意AsyncTask
,因为根据操作系统版本和您自己的设置,您可能无法一次运行多个AsyncTask
。请参阅我的其他答案和评论here
答案 2 :(得分:0)
建议使用Loader填充列表视图。
您可以将ListActivity实施为LoaderManager.LoaderCallbacks<E>
您将获得三种覆盖方法:onLoaderCreate,onLoaderFinish,onLoaderReset。
在onLoaderCreate中,您可以告诉它要加载Loader的对象。在游标的情况下,您可以创建一个cursorLoader对象,当您完成加载(onLoaderFinish)时将返回一个Cursor对象。然后,您可以使用光标填充listView的适配器。
至于下载的Asyn。您可以实现IntentService。您可以通过以下方式运行它:
Intent intent = new Intent(mContext, IntentService.class);
startService(intent);
您可以使用广泛的接收器从此后台服务中回电。