微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt6735 设置动态壁纸后,手机使用过程中恢复成了静态壁纸。

mt6735 设置动态壁纸后,手机使用过程中恢复成了静态壁纸。

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
手机设置为某一个动态壁纸,发现在使用后,壁纸有被恢复成静态壁纸。
[SOLUTION]
原因是由于WallpaperServiceManager 有检查到同一个wallpaper对应的Service,在10秒内,有两次died,会默认的将壁纸设置为静态壁纸。具体的代码可以参考WallpaperServiceManager.java中的如下代码:
public void onServiceDisconnected(ComponentName name) {
synchronized (mLock) {
mService = null;
mEngine = null;
if (mWallpaper.connection == this) {
Slog.w(TAG, "Wallpaper service gone: " + mWallpaper.wallpaperComponent);
if (!mWallpaper.wallpaperUpdating
&& (mWallpaper.lastDiedTime + MIN_WALLPAPER_CRASH_TIME)
> SystemClock.uptimeMillis()
&& mWallpaper.userId == mCurrentUserId) {
Slog.w(TAG, "Reverting to built-in wallpaper!");
clearWallpaperLocked(true, mWallpaper.userId, null);
}
}
}
}
具体壁纸的Service为什么出现频繁的died,有可能是low memory或者是Wallpaper apk 本身不稳定。
low memory
1.kernel loglow memory killerwallpaper servicekill
例如有如下的trace
kernel log:
– <4>[ 1397.294958] (0)[362:BinderThd_AP355]======low memory killer=====
– <4>[ 1397.295741] (0)[362:BinderThd_AP355]select 2337 (droid.wallpaper),
adj 1, size 6539, to kill
– <4>[ 1397.295772] (0)[362:BinderThd_AP355]send sigkill to 2337 (
droid.wallpaper), adj 1, size 6539
对于low memory kill的情况,需要看当前的是否有运行耗很多memory的应用,且手机配置的memory就不够,这种情况下,由于hw 本身限制,没有好的解决方法。而如果是memory leak导致的low memory ,需要具体问题具体分析,请提交eService给我司,并提供hprof文件和mobile log给我们分析。
抓取hprof的方法,参考我司的FAQ08893 [如何抓取app进程的hprof]。

2.apkmain logapkExceptionprocess diedapksource codeJEapkVendor
如果通过以上检查,还是没有找到动态壁纸died掉的原因,请再提交eService给我们,并请同时将WallpaperManagerService.java和WallpaperService.java中的DEBUG设置为true后,抓取问题复现过程的mobile log附加到eService上。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top