【问题标题】:Service on android?安卓服务?
【发布时间】:2011-03-31 18:31:31
【问题描述】:

我创建了一个与服务器同步的应用程序。 我已经有一个代码,一旦用户按下按钮就会同步。现在是时候在那里添加服务了。 关于android上的services,我有以下问题:

  1. 如果用户以前从未运行过应用程序,服务是否会启动? (即刚刚安装)
  2. 第一次启动服务是什么时候?我可以从主应用程序的onCreate 开始吗?
  3. 如果用户在应用程序中按下同步按钮,我应该启动该服务还是应该有不同的进程?那么如何检查后台同步没有同时发生?
  4. 我应该使用 ASyncTask,即使服务启动为

    startService(new Intent(this, ServiceSync.class));

【问题讨论】:

  • @mgv,我记得它并且很快就会这样做 - 只需要再次查看我所有的问题(不幸的是,并非所有问题都得到了回答)。

标签: android service android-service


【解决方案1】:

在 Android 中同步数据的首选方法是提供 SyncAdapter 来执行同步。您在this post 中对所需步骤进行了很好的总结。

您还会发现these articles 很有用。

编辑:

1-2-3:您可以使用bound service 来管理活动中的交互和服务方法。您在提供的链接中有完整的工作示例。基本上,您在活动的onStart 方法中绑定到服务并取消绑定onStop

请记住,服务在 UI 线程上运行,因此每个耗时的任务(例如通过网络获取数据)都必须在单独的线程中完成。

4:这里不需要AsyncTask

【讨论】:

  • 如果我不想将帐户详细信息添加到“帐户与同步”屏幕并且只想在我的应用程序中显示它们,我可以使用它吗?
  • 很遗憾,您需要创建一个帐户。但是,我想不出创建帐户会伤害您的用户的情况。相反,您会很好地使用 android 生态系统,并为您的用户提供同步所需内容的灵活性。将排队同步尝试的责任委托给系统也很好,不必自己处理。
  • 授权通过 OAuth 进行。不知道用户必须输入什么用户名和密码;)。
  • Twitter 使用 OAuth 例如,您可以添加 Twitter 帐户 :)。基本上,您负责实现将处理身份验证令牌的代码。
  • 好的,我现在明白了。所以我可以实施我需要的任何授权。但是,只有少数应用程序使用这种(正确的)方法。但是这些示例现在对我来说看起来有点复杂,所以将把它留给我项目的第 2 阶段;)。这次你能帮我服务吗? ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 2013-03-31
  • 2015-08-16
  • 1970-01-01
相关资源
最近更新 更多