Я создаю один RestartServiceBroadcast, чтобы мой фоновый сервис всегда оставался в живых после закрытия приложения.
public class RestartServiceBroadcast extends BroadcastReceiver {
Context ctx;
private PreferencesProviderWrapper prefProviderWrapper;
@Override
public void onReceive(Context context, Intent intent) {
this.ctx= context;
System.out.println("RestartServiceBroadcast:");
if(intent.getAction().equals(ipManager.INTENT_SERVICE_RESTART)){
startOneService();
}
}
private void startOneService() {
}
}
Здесь я также создаю один сервис для подключения IP-адреса сервера, в котором я также запускаю широковещательную рассылку для перезапуска того же сервиса. Я также использую START_STICKEY в Сервисе
public class IpService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("ipStack : onDestroy");
Intent broadcastIntent = new Intent(ipManager.INTENT_SERVICE_RESTART);
sendBroadcast(broadcastIntent);
}
}
Я вызываю Broadcast в методе mainActivity onDestroy ().
override fun onDestroy() {
val broadcastIntent = Intent(ipManager.INTENT_SERVICE_RESTART)
sendBroadcast(broadcastIntent)
super.onDestroy()
}
Это мой манифест
<service
android:name=".service.ipService"
android:enabled="true"
android:exported="false"
android:permission="demo.magic.mobile.android.permission.CONFIGURE_IP"
android:process=":ipStack"
android:stopWithTask="false">
<intent-filter>
<action android:name="demo.magic.mobile.service.ipService" />
<action android:name="demo.magic.mobile.service.ipConfiguration" />
</intent-filter>
</service>
<receiver
android:enabled="true"
android:exported="true"
android:name=".service.receiver.RestartServiceBroadcast"
android:process=":ipStack">
<intent-filter>
<action android:name="demo.magic.mobile.service.RestartService" />
</intent-filter>
</receiver>
Класс ipManager для получения значения Broadcast
public final class ipManager {
public static final String INTENT_SIP_SERVICE_RESTART = "demo.magic.mobile.service.RestartService";
}
Весь код работает нормально на моих устройствах motoG5 и MI Note5 Pro. но в устройствах MI note4 и MI4 служба и широковещание были убраны после удаления приложения из фона.
MotoG5 и другие устройства Logcat Вот так, когда я убиваю приложение.
2019-04-25 15:27:00.220 2345-3735/? W/ActivityManager: Scheduling restart of crashed service demo.magic.mobile/.service.ipService in 20942ms
2019-04-25 15:27:21.192 2345-2410/? I/ActivityManager: Start proc 23954:demo.magic.mobile:ipStack/u0a247 for service demo.magic.mobile/.service.ipService
2019-04-25 15:27:21.490 23954-23954/demo.magic.mobile:ipStack I/System.out: ipStack : onstart
Logcat процесса приложения MI Note4 kill
2019-04-25 15:26:04.584 1604-2918/? I/ActivityManager: Start proc 10971:demo.magic.mobile:ipStack/u0a643 for service demo.magic.mobile/.service.ipService caller=demo.magic.mobile
2019-04-25 15:36:04.216 1604-2785/? I/ActivityManager: Start proc 19393:demo.magic.mobile:ipStack/u0a643 for service dailer.demo.magic.mobile/.service.ipService caller=demo.magic.mobile
Помощь будет оценена, спасибо заранее.