处理 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(也许?)有关。
我正在尝试处理 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(也许?)有关。