Я делаю приложение, которому требуется, чтобы служба работала постоянно, даже когда приложение закрыто, от загрузки устройства до выключения устройства. Можно ли это сделать в андроиде?
Как запустить службу при загрузке устройства в Android?
Ответы (1)
Сначала вам нужно разрешение
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Затем создайте широковещательный приемник как
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class Startup extends BroadcastReceiver { public Startup() { } @Override public void onReceive(Context context, Intent intent) { // start your service here context.startService(new Intent(context, SERVICE.class)); } }
Зарегистрируйте этот приемник BroadCast в своем манифесте как
<receiver android:name="YOUR_PACKAGE.Startup" > <!-- This intent filter receives the boot completed event --> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
Примечание. Также не гарантируется, что служба будет работать с момента загрузки устройства до его выключения, так как в крайних случаях система Android может отключить службу, чтобы получить дополнительную память.
person
Rachit Mishra
schedule
15.12.2013
Для пользователя приложения очень важно, чтобы сервис всегда оставался в рабочем состоянии. Есть ли способ убедиться, что Android не убивает службу, если она не находится под экстремальной нагрузкой?
- person vergil corleone; 15.12.2013
Используйте службу
IntentService
, которая будет перезапущена, если служба будет убита при обработке намерения, других методов я еще не придумал.
- person Rachit Mishra; 15.12.2013
@twntee не согласен. Предполагается, что IntentService останавливается после однократного запуска, поэтому он не будет работать постоянно.
- person Utsav Gupta; 02.09.2014
@user2103379 user2103379 В некоторых случаях, когда ваш IntentService выполняет длительную операцию и системе необходимо освободить память, он будет убит.
- person Rachit Mishra; 08.09.2014
Попробуйте добавить android:enabled=true в decalration приемника в манифесте.
- person berserk; 04.03.2015
context.startService(new Intent(context, SERVICE.class));
вызовет исключение IllegalStateExeption для версий Android ›= Oreo, потому что вы больше не можете запускать службу, если приложение находится в фоновом режиме. Проверьте этот medium.com/@berriz_/ а>
- person Fivos; 11.04.2019