始终运行Android应用程序

时间:2013-09-13 08:09:21

标签: android

也许我还不了解一些Android概念,但回答以下问题可能会对我有所帮助:

在我的Android应用中,我需要在后台每隔x秒从Web服务获取数据(应用程序似乎无法运行)。

当来自网络服务的数据是我期待的数据时,我需要显示Android通知。

  • 如何在具体活动中加载我的应用程序?
  • 即使崩溃,我如何确保后台“服务”能够继续运行?这是,如何重新启动应用程序的后台部分或“服务”?

4 个答案:

答案 0 :(得分:2)

May I use Android Services?

是。使用IntentService

I need to get data from a web service each x seconds in background 

使用AlarmManager

When the data from the web service is the one I am expecting,
I do need to show an Android Notification.

使用BroadcastReceiverNotifications

How can then load my Application in a concrete activity?

使用Intent从通知

启动活动
How can I ensure the background "service" will keep running even if it crashes?
This is, how do I restart that background part or "service" of my application?

您需要修复导致崩溃的原因。否则,每次服务运行时,都可能导致崩溃。 AlarmManager将定期重新启动您的服务。

答案 1 :(得分:2)

  

在我的Android应用中,我需要从每个x的Web服务获取数据   后台秒(应用程序似乎无法运行)。

     

我可以使用Android服务吗?   http://developer.android.com/reference/android/app/Service.html

是的,您可以使用服务,但问题是您是否希望每隔x秒轮询一次Web服务?你会非常快速地耗尽电池。 您可以做的是安排一个不精确的重复任务(它将在15分钟内被称为APPROXIMATELY,但将与其他应用程序捆绑在一起以降低电池使用量)。请参见AlarmManager.setInexactRepeating()。 或者使用谷歌消息传递(GCM)推送通知,让您的服务器在有新数据时通知并唤醒您的手机。

  

当来自Web服务的数据是我期待的数据时,我会这样做   需要显示Android通知。然后如何加载我的应用程序   在具体活动中?

您可以从服务中执行这两项操作。服务是一个上下文,因此您可以显示通知,启动活动等...

  

如何确保后台“服务”即使继续运行也是如此   崩溃?这是,如何重新启动该背景部分或“服务”   我的申请?

您可以在AlarmManager中安排重复的服务启动意图。如果您的服务正在运行,则应该忽略它,如果没有 - 它将启动您的服务。

要确保您的服务不会被系统轻易杀死(例如,当内存不足时),请使用Service.startForeground()并确保从Service.onStartCommand()返回START_STICKY。

答案 2 :(得分:1)

*强调文字*请找到以下答案。

当来自网络服务的数据是我期待的数据时,我需要显示Android通知。

当您提供服务时,会从网络服务中找到所需数据,并显示通知

  • 如何在具体活动中加载我的应用程序?

    用户点击通知以启动活动

  • 如何确保背景"服务"即使它崩溃也会继续运行?这是,如何重新启动该背景部分或" service"我的申请?

设置定期闹钟以启动和停止服务,这样就不会耗尽电池。

答案 3 :(得分:1)

  • 是的,你是对的..使用服务。获取数据使服务启动应用程序的活动。

  • 关于服务崩溃的问题。编写另一个全局服务,检查数据获取服务是否正在运行。它发现服务停止的那一刻。使监视服务再次重新启动数据获取服务。