安卓上的服务?

4

我创建了一个与服务器同步的应用程序。我已经有一段代码,可以在用户按下按钮时进行同步。现在是添加服务的时候了。

我对Android中的服务有以下问题:

  1. 如果用户以前从未运行过应用程序,服务会启动吗?(即只安装了应用程序)
  2. 服务什么时候第一次启动?我能在主应用程序的onCreate中启动它吗?
  3. 如果用户在应用程序中按下同步按钮,我应该启动该服务还是需要不同的进程?如何检查后台同步不会同时发生?
  4. 即使服务是通过

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

    启动的,我是否应该使用ASyncTask?


@mgv,我记得这件事,很快就会做到 - 只是需要再次审查我所有的问题(不幸的是,并非所有问题都得到了回答)。 - LA_
1个回答

2
Android中同步数据的首选方法是提供SyncAdapter来执行同步。您可以在这篇帖子中找到所需步骤的简要概述。
您还会发现这些这些文章很有用。
编辑:
1-2-3: 您可以使用绑定服务来管理交互和从活动调用服务方法。您可以在提供的链接中找到完整的工作示例。基本上,在您的活动的onStart方法中绑定服务,并在onStop中取消绑定。
请记住,服务在UI线程上运行,因此每个耗时的任务(如通过网络获取数据)都必须在单独的线程中完成。
4: 这里不需要AsyncTask

很不幸,您需要创建一个账户。然而,我想不出任何情况下创建账户会对用户造成伤害。相反地,您将与Android生态系统友好合作,并为用户提供同步所需内容的灵活性。同时,将同步尝试排队的责任委托给系统,而无需自己处理,这也是一件好事。 - mgv
好的,我现在明白了。所以我可以实现任何我需要的授权。然而,只有少数应用程序使用这种(正确)方法。但是现在示例看起来有点复杂,所以我会把它留到我的项目第二阶段;)。这次你能帮我处理服务吗?;) - LA_
谢谢!如果我实现了你最初建议的方法 - (1) 从我的应用程序是否可以打开“帐户和同步”屏幕(甚至是我的应用程序的添加新帐户),比方说,通过按钮按下?(2) 用户是否能够直接从我的应用程序手动启动同步?如果是的话,那么这种方法可能更好。 - LA_
请勿在评论区提问。为每个问题新建一个问题,这样它就会出现在搜索结果中。您的原始问题已经得到了回答。 - mgv
好的,我已经提出了关于同样问题的单独问题。然而,关于原始问题 - 看起来使用SyncAdapter并不是最好的方法 - 我无法在API 7上更改同步频率(https://dev59.com/7lXTa4cB1Zd3GeqP5dQb)。 - LA_
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接