设置壁纸后uni-app app重启

设置壁纸后uni-app app重启

开发环境 版本号 项目创建方式
Mac Ventura 13.2.1 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:Ventura 13.2.1

HBuilderX类型:正式

HBuilderX版本号:4.76

手机系统:Android

手机系统版本号:Android 14

手机厂商:小米

手机机型:android14的模拟器和真机小米

页面类型:vue

vue版本:vue2

打包方式:离线

项目创建方式:HBuilderX

示例代码:

private void setHomeStaticWallpaper(String path, UniJSCallback callback) {  
    try {  
        Bitmap bitmap = wallpaperLogic.getBitmapFromPath(path);  
        if (bitmap == null) {  
            packageCallbakParameter(1, "图片加载失败", callback);  
            return;  
        }  
        wallpaperLogic.getWallpaperManager().setBitmap(bitmap);  
        bitmap.recycle();  
        packageCallbakParameter(0, "桌面壁纸设置成功", callback);  
    } catch (Exception e) {  
        e.printStackTrace();  
        packageCallbakParameter(1, "静态壁纸设置失败:" + e.getMessage(), callback);  
    }  
}

操作步骤:

  • 在界面上点击设置壁纸,成功后app重新启动

预期结果:

  • 不重启

实际结果:

  • 重启

bug描述: 设置壁纸后应用重启?uni-app开发app的主要功能,设置壁纸功能是自己写的android原生插件,uni-app调用原生插件设置壁纸。在andorid10上设置成功后不会重启,在android14上会重启。设置静态壁纸和动态壁纸都会重启。


更多关于设置壁纸后uni-app app重启的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于设置壁纸后uni-app app重启的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个Android系统兼容性问题。在Android 10及以下版本中,设置壁纸通常不会导致应用重启,但从Android 11开始,系统对壁纸设置行为进行了调整。

问题分析:

  1. 当调用WallpaperManager.setBitmap()时,系统壁纸服务会重新创建壁纸引擎
  2. Android 14加强了应用生命周期管理,壁纸设置可能被系统识别为资源密集型操作
  3. 系统可能认为应用状态不稳定,主动重启应用进程

解决方案:

  1. 在AndroidManifest.xml中为Activity添加配置:
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout"
  1. 优化插件代码,在设置壁纸前后处理Activity生命周期:
// 设置壁纸前保存应用状态
// 设置完成后主动触发页面刷新而非依赖系统重启
回到顶部