实际工作中为了fix某个issue,车载应用需要在车机andoid系统退出STR模式(Suspend to RAM)时候执行某个逻辑
解决方案参照anrdoid文档
注册一个CarPowerStateListener回调,重写onStateChanged 方法
在androidManifest.xml中增加以下权限
<uses-permission android:name="android.car.permission.CAR_POWER" />
在业务逻辑中注册CarPowerStateListener
import android.car.hardware.power.CarPowerManager;
import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
public class MyService extends Service
{
private CarPowerManager mCarPowerManager = null;
@override
public void onCreate()
{
super.onCreate();
Car car = Car.CreateCar(this);
mCarPowerManager = (CarPowerManager)car.getCarManager(Car.POWER_SERVICE);
if(mCarPowerManager!=null)
{
final CarPowerManager.CarPowerStateListener powerListener = new CarPowerManager.CarPowerStateListener () {
@Override
public void onStateChanged(int state) {
Log.i(TAG, "onStateChanged() state = " + state);
if(state==SUSPEND_EXIT) //此时退出STR mode
{
//do my business
}
}
};
}
}
@override
public void onDestroy()
{
super.onDestroy();
if(mCarPowerManager!=null)
{
mCarPowerManager.clearListener();
}
}
}