让 Android 应用程序在后台运行,防止它停止/死亡

Posted

技术标签:

【中文标题】让 Android 应用程序在后台运行,防止它停止/死亡【英文标题】:Keeping an Android app running in the background, preventing it from stopping/dying 【发布时间】:2014-09-23 05:17:12 【问题描述】:

我创建了一个应该在后台继续工作的应用程序。这似乎在一段时间内可以正常工作,但是如果我长时间不使用手机,我会发现它已经停止工作,并且在打开它时又会重新启动。

我的所有搜索都将我引导到有关如何使我的应用程序在后台运行的帖子,这很好(我基本上只是从 Xamarin 教程中提取了整个部分),但由于某种原因,它只是决定在一个时间。

有什么方法可以强制/确保应用继续在后台运行?

【问题讨论】:

谷歌“前台服务”。 这是 Xamarin 中的常见问题;我与之互动的一些公司也遇到了类似的问题。你如何执行你的后台任务?如果它不在服务中,android 很可能会终止您的 Activity(即使它有一个后台 .NET 线程)并与它一起取出 Mono 运行时。 另外,这是否发生在发布或调试版本中?调试版本会以静默方式将 Mono.Android.DebugRuntime 安装到您的设备上并将其作为服务激活,而发布版本则不会。 【参考方案1】:

如果您希望您的应用继续在后台执行计算,您应该选择Service ( documentation )。您可以选择构建一个仍将在后台运行的服务,尽管应用程序已关闭。

[Service]
public class DemoService : Service

      public override StartCommandResult OnStartCommand (Android.Content.Intent intent, StartCommandFlags flags, int startId)

        var t = new Thread (() => 
                Log.Debug ("DemoService", "Doing work");
                Thread.Sleep (5000);
                Log.Debug ("DemoService", "Work complete");
                StopSelf ();
        
        );
        t.Start ();
        return StartCommandResult.Sticky;


如果您的意思是“继续在后台工作”,您的应用应该从正确的片段/活动重新启动,您应该检查如何保存您的状态。 (documentation)

【讨论】:

【参考方案2】:

用户服务并执行您想要的任务,即使应用程序从后台关闭,服务也会在后台运行。

【讨论】:

【参考方案3】:

请参考以下内容:

http://developer.android.com/guide/components/services.html

https://developer.android.com/training/run-background-service/create-service.html

但是对于启动,您可以按照示例进行操作: http://www.tutorialspoint.com/android/android_services.htm

【讨论】:

这些对于 Xamarin 应用程序来说并不完全正确。该问题使用 Xamarin 标记。

以上是关于让 Android 应用程序在后台运行,防止它停止/死亡的主要内容,如果未能解决你的问题,请参考以下文章

如何让android的service一直在后台运行

unity发布的android游戏有办法让它在后台运行时主线程不停止吗

我需要让我的应用程序总是在后台运行。

使用 GPS 在后台运行的应用程序以及如何停止它

当android应用程序后台运行时如何在android中隐藏视图(在后台运行时不停止android拍摄快照)[重复]

怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死