
我通过扩展WallpaperService和Engine类来创建动态壁纸.墙纸不会频繁更改,因此为了避免不必要的cpu使用,我只在某些事件(触摸,visibleChanged等)上绘制墙纸.我还使用PreferenceFragment为墙纸生成设置活动.
问题:当用户在设置活动中更改首选项时,我希望墙纸收到通知并使用新设置尽快重新绘制自己.但是由于我只读取设置并在某些事件上绘制墙纸,所以墙纸的更改直到发生这些事件时才发生.
将不胜感激的解决方案:) thnx.
有人吗:(
解决方法:
您有两种选择.检查onVisibilityChanged()中的首选项值,并相应地更新墙纸.或使用OnSharedPreferencechangelistener来让您的引擎知道用户何时更改了首选项.
后者的例子.
让您的引擎实现OnSharedPreferencechangelistener接口.
@H_403_18@private class MyEngine extends Engine implements OnSharedPreferencechangelistener { // A reference to our shared prefs; private SharedPreferences mPreferences; @OverrIDe public voID onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); mPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // Register an OnSharedPreferencechangelistener to our shared prefs mPreferences.registerOnSharedPreferencechangelistener(this); // Your existing code ... } @OverrIDe public voID onDestroy() { super.onDestroy(); // Don't forget to unregister the Listener mPreferences.unregisterOnSharedPreferencechangelistener(this); } @OverrIDe public voID onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { // Whenever the user changes a setting, this method will be called. // So do what needs to be done here, like redrawing the wallpaper redrawWallpaper(); }} 总结 以上是内存溢出为你收集整理的android-通知动态壁纸服务有关设置的更改全部内容,希望文章能够帮你解决android-通知动态壁纸服务有关设置的更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)