android 高清壁纸设置慢
??? 由于項目的需要最近在解決一個 bug? 在1080p 的手機上面設置壁紙會很慢慢,慢的原因是和壁紙 的大小?有關,壁紙越大,時間直越長,一般1080 p 的壁紙大概有10M左右,
所以通過文件流?來保存會比較慢一般也在6~7S,用戶體驗特別差。所以需要優化。
?? 下面說一下設置的流程,用戶進程直接獲取WallpaperManager,然后調用public void setBitmap(Bitmap bitmap) throws IOException? 設置壁紙,一般設置有三種方式,?public void setResource(int resid) throws IOException和
??? public void setStream(InputStream data) throws IOException ,不管用什么方法都比較慢,開機啟動的時候會啟動WallpaperManagerService來管理壁紙,同時會生成一個文件監視器,?FileObserver mWallpaperObserver監聽壁紙文件(4.2的版本:/data/system/users/0/files/wallpaper),如果 文件被重寫或者被修改都會觸發刷新wallpaper ,具體方法:?bindWallpaperComponentLocked(mImageWallpaperComponent,true, false);//刷新壁紙。
????????saveSettingsLocked();//保存壁紙。
在bindWallpaperComponentLocked中會啟動SystemUi下面的ImagerWallpaper,然后通過WallpaperManagerService來decode一張Bitmap,再刷新繪畫界面,感覺流程還是比較亂的,對于高清壁紙來說慢慢的原因,decode 生成一張 Bitmap? 的時候太長,所以我們可以直接保存設置的bitmap 在WallpaperManagerService里面,先刷新界面再保存,好了說一下具體修改吧。
情況一:用戶通過setBitmap的方式來設置壁紙的優化。
??? 在interface IWallpaperManager接口添加setWallpapperBitmap和getWallpaperBitmap 還有一個刷新界面方法 refreshWallpaper,然后 在WallpaperManagerService實現方法,聲明成員變Bitmap bitmap ,public void setWallpaperBitmap (Bitmap bitmap){
this.bitmap = bitmap;}
public void getWallpaperBitmap(){
return bitmap};
然后在修改WallpaperManager? 的setBitmap方法,sGlobals.mService.setWallpaperBitmap(bitmap),再調用 sGlobals.mService.refreshWallpaper刷新界面。這樣用戶看起來很快,但設置壁紙的對話框還是很久在才消失,因為保存圖片是在客戶端進程中運行的,所以我們可以開一個線程來保存圖片,new Thread(){
?try {
??????????? ParcelFileDescriptor fd = sGlobals.mService.setWallpaper(null);
??????????? if (fd == null) {
??????????????? return;
??????????? }
??????????? FileOutputStream fos = null;
??????????? try {
??????????????? fos = new ParcelFileDescriptor.AutoCloseOutputStream(fd);
??????????????? bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
??????????? } finally {
??????????????? if (fos != null) {
??????????????????? fos.close();
??????????????? }
??????????? }
??????? } catch (RemoteException e) {
??????????? // Ignore
??????? }
}。
?
轉載于:https://www.cnblogs.com/snake-hand/p/3190167.html
總結
以上是生活随笔為你收集整理的android 高清壁纸设置慢的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计划策略70 之 MIXED MRP(m
- 下一篇: [置顶] “河软CSDN2011级表彰暨