2016-03-14 3 views
2

Я пытаюсь выключить устройство Android. Когда устройство выключается, одноэлемент с именем PostManager отправляет запрос POST ,Отключить устройство android (ВЫПУСК: намерение принимается только в первый раз)

Для этого я использую BroadcastReceiver:

public class DeviceOffReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SHUTDOWN)) { 
      PostManager.getInstance().onDeviceOff(); 
     } 
    } 
} 

public class PostManager{ 
     public void onDeviceOff() { 
     sendRequest(); 
    } 
} 

Вот BroadcastReceiver инициализации:

IntentFilter filter = new IntentFilter(".DeviceOffReceiver"); 
    filter.addAction(Intent.ACTION_SHUTDOWN); 
    mShutDownReceiver= new DeviceOffReceiver(); 
    app.registerReceiver(mShutDownReceiver, filter); 

Этот код работает отлично .. но только в первый раз. «В первый раз» я имею в виду, когда приложение запускается в первый раз. Кто-нибудь когда-либо испытывал ту же проблему?

EDIT: Я зарегистрирую намерение ACTION_SCREEN_OFF. Я получаю его каждый раз. Это как-то связано с намерением ACTION_SHUTDOWN.

+0

Обязательно зарегистрируйтесь BroadcastReceiver снова после перезагрузки – user2122552

+0

Я забыл упомянуть, но я регистрирую BroadcastReceiver при каждой перезагрузке. – tcacciatore

ответ

2

Моя версия устройства 4.3. Я попытался запустить приложение с помощью другого устройства (на 5.0.2), и он работает каждый раз ...

Значит, это как-то связано с 4.3 (может быть?).

1

Убедитесь, что этот код введен в манифест. Вы можете использовать этот код, чтобы решить вопрос:

<receiver android:name=".DeviceOffReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.ACTION_SHUTDOWN" /> 
    </intent-filter> 
</receiver> 
+0

Я сделал это программно. – tcacciatore

+0

Попробуйте его определить в файле манифеста. Может быть, проблема утечки ресивера будет там. –

+0

По мере того, как вы регистрируете получателя грамматически, его учет и регистрация должны обрабатываться. Согласно моему опыту, когда вы имеете дело с OS Broadcasting, мы должны пойти с Manifest. –

Смежные вопросы