1

我的应用程序动态创建一些文件并通过对象跟踪文件。在某些时候,对象被传递给 IntentService。IntentService 的目的是

  • 创建一个 XML 文件以包含有关其他文件的数据
  • 将 XML 文件和其他文件添加到 ZIP 文件
  • 将 ZIP 文件上传到 WCF 服务

ZIP 文件必须在某个时候上传。事情可能会发生;WCF 服务可能已关闭等。

在保证上传 ZIP 文件方面,我有哪些选择?我目前的计划是将一些信息保存到 SQLite DB 并在每次启动应用程序时检查它并从那里获取它。不确定这是一个好主意,或者是否有更好的方法来处理这个问题。

另外,我是一个Android新手,但如果我理解正确的话,如果IntentService在它完成之前被关闭,它会在某个时候自动用相同的Intent重新创建,对吧?否则我也必须考虑到这一点。

4

2 回答 2

2

你应该看看通过使用同步适配器来使用内置同步服务看看这个 http://naked-code.blogspot.co.uk/2011/05/revenge-of-syncadapter-synchronizing。 html

观看嵌入该页面的谷歌 I/O 视频。

您应该注意,Virgil 建议使用同步适配器以外的任何东西都是完全错误的。SyncAdapter 实现起来很简单,上面的链接还演示了如何设置它。

SyncAdapter 将负责重试尝试,并选择最佳时刻为您的手机同步数据。您可以安排同步适配器,也可以根据您的需要请求立即同步。

客户经理不保存名称和密码。他们会;您的网站或 oauth2 服务需要,但客户经理存储令牌而不是凭证。如果令牌需要刷新,则会向用户显示帐户管理器登录屏幕,然后运行您的代码以获取新的身份验证令牌。

有关详细信息,请参阅http://developer.android.com/training/id-auth/identify.html

于 2013-04-08T14:48:29.300 回答
0

我目前的计划是将一些信息保存到 SQLite DB 并在每次启动应用程序时检查它并从那里获取它。

您快到了。不是每次应用程序启动时检查数据库,而是AlarmManager每 X 小时/天使用并检查上传状态。上传可以由IntentService.

一个更好的原因AlarmManager是用户可以选择让应用程序保持打开数天或数周!通过运行数据库和上传代码的重复警报,您可以确定上传尝试会定期发生。

看看这个关于调度重复任务的相关问题 - Scheduling recurring task in Android

于 2013-04-08T14:09:46.333 回答