处理 android 设备关闭(问题:仅在第一次接收到意图)

Handle an android device shut down (ISSUE : The intent is received only the first time)

我正在尝试处理 android 设备关闭:当设备关闭时,名为 PostManager 的单例发送 POST 请求。

为此,我使用了 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);

此代码完美运行..但只是第一次。 "first time",我的意思是第一次应用程序是 运行。 有没有人遇到过同样的问题?

编辑:我注册了意图 ACTION_SCREEN_OFF。我每次都收到。这与 ACTION_SHUTDOWN 意图有关。

确保将此代码放入清单中。 您可以使用此代码解决问题:

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

我的设备版本是4.3。 我尝试 运行 使用另一台设备(在 5.0.2 上)运行该应用程序,它每次都有效...

所以它与 4.3(也许?)有关。