我手头有一个应用程序,我们需要在其中使用选项卡进行数据输入。该选项卡从远程服务器加载初始数据。随后,当用户在选项卡上插入/更新数据时,需要更新、插入(用于新数据)远程服务器。数据库服务器是 SQL Server 2008。
正如 stackoverflow 的许多专家所建议的那样,我们将在服务器上使用 Web 服务来促进数据交换。但是我仍然不确定以下几点 -
1. 在这种情况下,最好的身份验证机制是什么。
2.我应该从android的sqlite表中获取一大块数据,转换为JSON并将其传递给Webservices进行插入/更新操作还是获取单行并更新。虽然我认为发送单行效率不高。
3.我如何管理升级远程服务器的失败。如果我使用单行,这会更容易。我的计划是将 sqlite 记录的状态标志设置为 1(默认为 0),以便将记录更新/插入到远程服务器。如果更新/插入失败,我将状态标志改回 0,以便下次我可以再次使用它们。如果成功,将标志更改为 2。
提前致谢
更新
做一些研究并尝试使用 SampleSyncAdapter。对整个操作仍然有些困惑。我的 Sqlite 数据库是由一个程序创建的,并且该应用程序中存在内容提供程序类。应用程序的包名称是 com.xylo.pds。我正在尝试编写一个同步应用程序,它尝试同步第一个应用程序中使用的数据。如果我遵循 SampleSyncAdapter 示例 - 我需要开发服务器端应用程序进行身份验证,然后将 android 数据上传到服务器(在我的情况下,一种方式就足够了)。我可以在示例中提供的服务器端代码的帮助下做到这一点。所以我只是为我的身份验证和同步复制了示例代码的代码。我的authenticator.xml 有现有的条目-
android:contentAuthority="com.android.contacts"
android:accountType="com.example.android.samplesync
所以现在我的应用程序可以添加帐户并同步联系人。难怪它可以与示例中给出的虚拟服务器 ID 一起使用。
现在我需要将自己的代码放入应用程序中,以便将本地数据库加载到服务器。为此,我需要在 SyncAdapter 的 onPerformSync 中添加代码。为了使用现有的 ContentProvider,我在清单文件中有以下条目
<uses-permission android:name="com.xylo.pds.RCDataProvider" />
。定义 ContentProvider 的应用程序具有以下条目 -
<provider android:name=".RCDataProvider"
android:authorities="com.xylo.pds.provider"
android:exported="true"
android:readPermission="android.permission.permRead" />
现在,如果我在 SyncAdapter 中添加了对 contentresolver 的调用,则保持其他所有内容都相同,只是为了检查一切正常。所以,没关系,我可以更改 onPerformSync 以添加用于上传数据的代码。然而,现在应用程序停止同步联系人。我缺少什么请赐教。谢谢