锁屏时保存数据

遇到的问题:播放视频时锁屏,解锁后视频进度丢失

解决方法:

activity中实现  onSaveInstanceState() 方法,这个方法在锁屏时会调用,但是存值时别临时取,像视频播放,临时取 .isPlaying() 会取到停止后的值,即使你锁屏时正在播放,存值的格式有点类似 Intent (key,value)格式

 @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        //部分手机在锁屏时不会停止播放,这里给停止下
        ...
        //锁屏时保存视频进度,oncreate()里取出防止进度丢失,比如:
        outState.putInt("progress", progress);
        outState.putBoolean("isPlaying", mIsPlaying);
        super.onSaveInstanceState(outState);
    }

重新开屏后在 onCreate() 中取

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null) {
            //平时走的正常流程
            Intent intent = getIntent();
            ...
        } else {
            //恢复数据时的取值,比如:
            progress = (int) savedInstanceState.get("progress");
            mIsPlaying = (boolean) savedInstanceState.get("isPlaying");
        }

记录一下简单的使用,详细的使用和原理可以去百度 onSaveInstanceState 

你可能感兴趣的:(java,开发语言)