1

我对 API 15 及更高版本上的新片段有点困惑。我一直在开发旧 API 10 的姜饼版本。我用来获取我想要的数据的方法是通过AsyncTask下载主要活动的数据并将其存储到内部存储中,然后使用另一个AsyncTask来填充我的列表视图。

现在我决定从 API 15 Master Detail Flow 开始构建一个新的应用程序,它从 Fragment Activity 和 Fragment 开始,这对于手机和平板电脑来说有点酷。所以我的问题是使用旧方法AsyncTask仍然可行还是建议使用其他方法下载数据和填充列表视图?

4

3 回答 3

1

对于长时间运行的任务,例如从 Internet 下载数据,始终建议任何版本的 API 使用单独的线程(在本例中为 AsyncTask doInBackground 方法)。

于 2013-03-25T14:46:24.707 回答
0

你肯定想在他们自己的线程上分拆慢任务。但请注意AsyncTask,因为根据操作系统版本和您自己的设置,您一次可能无法运行多个AsyncTask在此处查看我的其他答案和评论

于 2013-03-25T14:48:45.227 回答
0

建议使用 Loader 来填充列表视图。

你可以让你的 ListActivity 实现LoaderManager.LoaderCallbacks<E>

您将获得三个覆盖方法:onLoaderCreate、onLoaderFinish、onLoaderReset。

在 onLoaderCreate 中,您可以告诉它您希望 Loader 加载什么对象。如果是游标,您可以创建一个 cursorLoader 对象,它会在您完成加载时返回一个 Cursor 对象(onLoaderFinish)。然后,您可以使用光标为 listView 填充适配器。

至于用于下载的 Asyn。你可以实现一个 IntentService。您可以通过以下方式运行它:

Intent intent = new Intent(mContext, IntentService.class);
startService(intent);

您可以使用广播接收器从该后台服务中获得回叫。

于 2013-03-25T14:58:02.147 回答