gpt4 book ai didi

android - 如何在 Android 中设计同步服务

转载 作者:行者123 更新时间:2023-11-29 14:14:41 25 4
gpt4 key购买 nike

我们有一个问题,我们需要在后台定期从我们的服务器同步大量信息,并将其保存在我们的 SQLite 数据库中。

在我看来,我有一些选择,只是不太确定我是否完全理解所有的后果。

1) 有一个进程内服务器,START_STICKonStartCommand 返回,并添加 PeriodicSyncs(大概在 Application#onCreate 上)。

2) 有一个带有 START_STICKY 的进程内服务器,它对计时器任务进行排队并定期更新数据库。

3) 让 Service 在它自己的进程中运行并写入我们的 SQLite 数据库。

所以,这里是问题:

a) 选项 #1 和 #2 是否排除了 SyncAdapter?运行 SyncAdapter 有什么好处? (除了必须在 Service 上启动一个新的 Thread 来发出 HTTP 请求之外)

b) #1 和 #2 是否在我的应用程序被销毁后仍然存在?如果他们这样做,他们会带回整个应用程序吗?

c) 我可以用 #3 写入我的 SQLite 数据库吗?我猜是的,因为他们会使用相同的用户 ID,对吗?

d) 在#3 和主要申请流程之间来回对话的最简单方法是什么?广播接收器?其中大部分将通过纯粹使用带有通知 URI 的 Cursor

来处理

e) 只是一般的想法、优点/缺点等:)

最佳答案

  1. Android 同步框架的主要优点是您无需实现自己的框架。
  2. addPeriodicSync() 将同步设置写入系统,意味着告诉 Android 同步框架定期运行您的同步适配器。所以你不需要实现你自己的调度器。 (您需要持有WRITE_SYNC_SETTINGS权限)
  3. 实现自定义(不是 stub )ContentProvider 并对其执行 CRUD。管理进程间通信是 Content Provider 的主要功能之一,因此您不需要广播。相反,使用 ContentProvider + Loader ( http://developer.android.com/guide/components/loaders.html ) 更新游标。

内容提供者:

class MyContentProvider extends ContentProvider {
public Uri insert(...) {
...
mDbHelper.getWritableDatabase.insert(...);
...
}
}

同步适配器:

class MySyncAdapter extends AbstractThreadedSyncAdapter {
public void onPerformSync(...) {
...
new ContentResolver(getContext()).insert(...);
...
}
}

关于android - 如何在 Android 中设计同步服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com