2

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

public class MyServiceBootReceiver extends BroadcastReceiver { 
public MyServiceBootReceiver() {super();} 

@Override 
public void onReceive(Context context, Intent intent) { 
    if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
     if(MyService.isRunning(context)) //static method to get shared preferences value 
     context.startService(new Intent(context, MyService.class)); 
    } 
} 

}

Теперь я путать о параметре «контекст» в OnReceive() метод, так как приложение и все его компоненты будут уничтожены, когда устройство выключения, что контекст передается в приемнике, и какой компонент моего приложения на самом деле его получает?

+0

Как говорится в документации (https://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context, android.content.Intent)) _Context: Контекст, в котором приемник работает. – fsnasser

+0

на загрузке ничего из моих компонентов приложения не работает? за исключением случаев, когда android os сохраняет некоторую ссылку на мое приложение, даже когда оно уничтожено! – Altaiir

ответ

2

Прежде чем позвонить вашему BroadcastReceiver, Android создаст контекст приложения вашего приложения. Фактически вы можете увидеть это, если у вас есть свой собственный класс, который наследует приложение и создает журнал в onCreate.

Однако контекст, который вы получаете в своем приемнике, ограничен: он не может звонить registerReceiver() или bindService().

Дополнительную информацию о различных типах контекстов можно найти here.

+0

нормально, но на загрузке устройства, это контекст приложения, который все еще поддерживается системой Android? – Altaiir

+0

Контекст приложения уничтожается, когда Android удаляет ваше приложение из фона, а это означает, что при перезапуске устройства контекст приложения также уничтожается. – BMacedo

+0

точно, так что это за контекст? обратите внимание, что код работает отлично, тестируется на устройстве много раз и работает, так что контекст может фактически получить доступ к моему файлу разделенных предпочтений «MODE_PRIVATE» и получить, если служба запущена и перезапустит его. – Altaiir