如何在后台运行Android应用程序?

这段代码会在启动系统后自动运行一个应用程序,但是按下后退button后应用程序将closures。

如果应用程序通过点击图标正常运行。 即使按下后退button或运行其他应用程序,它也会连续运行。

public class AutoBoot extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, MyActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } 

我的问题是,如何使这个自动运行代码连续运行,即使按下后退button或运行其他应用程序?

如果您希望您的应用程序在后台运行,则可以在此启动Service 。 这就是Android中的服务 – 在后台运行并执行长时间的操作。

UDPATE

您可以使用START_STICKY使您的服务持续运行。

 @Override public int onStartCommand(Intent intent, int flags, int startId) { handleCommand(intent); // We want this service to continue running until it is explicitly // stopped, so return sticky. return START_STICKY; } 

开始一个活动不是这种行为的正确方法。 而是让你的BroadcastReceiver使用一个意图来启动一个可以继续运行的服务。 (请参阅http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle

另见持久服务

正如应用程序在后台运行一样。 我假设你真正要问的是如何让应用程序在后台做东西。 下面的解决scheme将使您的应用程序在打开应用程序和系统重新启动后在后台执行某些操作。

下面,我添加了一个链接到一个完整的工作示例(以Android Studio项目的forms)

这个主题似乎超出了Android文档的范围,似乎没有任何一个综合文档在这个。 这些信息分布在几个文档中。

以下文档间接告诉你如何做到这一点: https : //developer.android.com/reference/android/app/Service.html

https://developer.android.com/reference/android/content/BroadcastReceiver.html

https://developer.android.com/guide/components/bound-services.html

为了使您的使用要求正确,上面的文档的重要部分仔细阅读是:#Binder,#Messenger和组件的链接如下:

https://developer.android.com/guide/components/aidl.html

这里是一个完整的工作示例(Android Studio格式)的链接: http : //developersfound.com/BackgroundServiceDemo.zip

这个项目将启动一个绑定到服务的Activity; 实施AIDL。

这个项目对于跨不同应用的IPC的目的也是有用的。

这个项目也被开发,当Android重新启动时自动启动(提供的应用程序已经运行至less一个安装后,应用程序没有安装在SD卡上)

当这个应用程序/项目重新启动后运行,它dynamic地使用一个透明的看法,使它看起来像没有应用程序已经开始,但关联的应用程序的服务开始干净。

这段代码的编写方式非常简单,可以模拟一个预定的服务。

这个项目是根据上述文件开发的,随后是一个干净的解决scheme。

然而,这个项目的一部分是不干净的:我还没有find一种方法来启动重启服务,而不使用一个活动。 如果你们任何人阅读这篇文章有一个干净的方式来做到这一点,请发表评论。