实际工作中为了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();
        }
    }
}