我创建了一个应该在后台继续工作的应用程序。这似乎在一段时间内工作正常,但如果我长时间不使用手机,我发现它已停止工作,打开后又重新启动。让Android应用程序在后台运行,防止它停止/死亡
我所有的搜索都会让我知道如何让我的应用程序在后台运行,这样做很好(我基本上只是从Xamarin教程中拉出整个部分),但由于某种原因,它只是决定停止一次。
有什么办法来强制/确保应用程序将继续在后台运行?
我创建了一个应该在后台继续工作的应用程序。这似乎在一段时间内工作正常,但如果我长时间不使用手机,我发现它已停止工作,打开后又重新启动。让Android应用程序在后台运行,防止它停止/死亡
我所有的搜索都会让我知道如何让我的应用程序在后台运行,这样做很好(我基本上只是从Xamarin教程中拉出整个部分),但由于某种原因,它只是决定停止一次。
有什么办法来强制/确保应用程序将继续在后台运行?
用户服务和执行所需的任务,即使应用程序从后台关闭,服务仍在后台运行。
如果你希望你的应用程序保持执行计算在后台,你应该选择一个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)
Google“前台服务”。 – 323go 2014-09-23 05:19:00
这是Xamarin中的常见问题;我与之交互的一些公司遇到了类似的问题。你如何执行你的后台任务?如果它不在服务中,Android很可能会终止您的活动(即使它有一个后台.NET线程),然后用它取出Mono运行时。 – matthewrdev 2014-09-23 06:06:12
此外,这是发生在版本或调试版本?调试版本以静默方式将Mono.Android.DebugRuntime安装到您的设备上,并将其作为服务激活,而发布版本则不会。 – matthewrdev 2014-09-23 06:21:32