使用LoaderManager的多个装载程序的模式?

use*_*701 12 android android-loadermanager

我正在使用Fragments和LoaderManager.我必须启动未知数量的任务,它们可能并行运行(否则我只重用一个且只有一个加载器).例如,我有一个listview,每行可能有一个按钮,用于将该行的内容保存到Web服务器.用户可以并行地对多个项目发起保存请求.

private int nextId = 0;

private void onClickListener() {
    Bundle bundle = new Bundle();
    bundle.putNextData(...);
    getLoaderManager().initLoader(nextId++, bundle, this);
}
Run Code Online (Sandbox Code Playgroud)

我自己可以尝试簿记,所以手动创建一个加载器池并在可能的情况下重用它们,看起来它可能已经由API实现了?

谢谢

Rom*_*rik 4

我认为您不应该使用加载程序将数据保存到远程服务器。

相反,使用IntentService或类似的东西来处理“保存”操作队列。这样,您与 Web 服务器的通信可以批量、折叠(即单个项目的多个排队保存可以折叠为一个操作),并且如果需要,将在您的活动的生命周期之外持续存在。

由(或等效)处理的保存队列IntentService也是使用退避重试失败操作的好方法,因为您可以使用指数退避来实现延迟重试AlarmManager