2016-03-22 4 views
-2

Я хочу, чтобы одна из моих служб выполнялась, даже если пользователь перезапустил устройство. Я пробовал этот код, но не смог. Что мне делать? Помоги мне, пожалуйста.Запуск службы после перезапуска устройства

Спасибо!

MyService2.class:

public class MyService2 extends Service { 
    private MyReceiver mR = null; 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     mR = new MyReceiver(); 
     IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED); 
     registerReceiver(mR, intentFilter); 
    } 
} 

MyReceiver.class

public class MyReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
      context.startService(new Intent(context, MyService.class)); 
      context.startService(new Intent(context,MyService2.class)); 
     } 
    } 
} 

ответ

0

Во-первых не нужно зарегистрировать приемник в службе. Добавьте приемник вещания в манифест.

Как:

<receiver android:name="your broadcast class"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 

Не забудьте добавить разрешение также:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

При перезагрузке устройства приемник будет автоматически выполняться системой, как она объявлена в манифесте. В вашем приемнике только начните свое обслуживание.

public class MyReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
     //add a log or toast to confirm the receive 
     context.startService(new Intent(context, MyService2.class)); 
    } 
} 

}

И

public class MyService2 extends Service { 
private MyReceiver mR = null; 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 

public int onStartCommand(Intent intent, int flags, int startId) { 
    // do what ever you wanted to do... 
} 

}

1

Вы Регистрация вашей BroadcastReciver в вашей службе, в котором вы пытаетесь начать использовать BroadcastReciver, который не зарегистрирован.

Так что попробуйте регистрации ваш вещательный приемник в вашем файле манифеста, как этот

<receiver android:name="your broadcast class"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter 
Смежные вопросы