2014-09-23 2 views
1

Я создал приложение, которое должно продолжать работать в фоновом режиме. Кажется, что это хорошо работает какое-то время, но если я не буду использовать свой телефон в течение длительного времени, я обнаружил, что он перестает работать, а после его открытия снова запускается.Сохранение приложения Android в фоновом режиме, предотвращающее его остановку/смерть

Все мои поиски ведут меня к сообщениям о том, как заставить приложение работать в фоновом режиме, что он делает хорошо (я в основном просто вытащил всю эту часть из учебника Xamarin), но по какой-то причине он просто решил остановиться после время.

Есть ли способ заставить/обеспечить, чтобы приложение продолжало работать в фоновом режиме?

+0

Google «Служба переднего плана». – 323go

+0

Это обычная проблема в Xamarin; некоторые компании, с которыми я общаюсь, сталкиваются с подобными проблемами. Как вы выполняете фоновые задачи? Если это не услуга, Android, скорее всего, убьет вашу деятельность (даже если она имеет фоновый поток .NET) и выведет с ней Mono. – matthewrdev

+0

Кроме того, это происходит в версиях Release или Debug? Отладка создает бесшумную установку Mono.Android.DebugRuntime на ваше устройство и активирует его как службу, тогда как релиз сборки не делают. – matthewrdev

ответ

0

Пользовательское обслуживание и выполнение задач, которые вы хотите в этом случае, службы выполняются в фоновом режиме, даже если приложение закрыто от фона.

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)