Android 通知live墙纸服务有关设置的更改
我正在通过扩展墙纸服务和引擎类来创建实时墙纸。壁纸不会经常更改,因此为了避免不必要的CPU使用,我只在某些事件(触摸、可视性更改等)上绘制壁纸。我还使用PreferenceFragment为墙纸生成设置活动 问题:当用户在“设置”活动中更改首选项时,我希望墙纸得到通知,并使用新设置尽快重新绘制。但是,由于我只读取设置并绘制某些事件的墙纸,墙纸的更改在触发这些事件之前不会发生 希望您能提供以下解决方案:)thnxAndroid 通知live墙纸服务有关设置的更改,android,Android,我正在通过扩展墙纸服务和引擎类来创建实时墙纸。壁纸不会经常更改,因此为了避免不必要的CPU使用,我只在某些事件(触摸、可视性更改等)上绘制壁纸。我还使用PreferenceFragment为墙纸生成设置活动 问题:当用户在“设置”活动中更改首选项时,我希望墙纸得到通知,并使用新设置尽快重新绘制。但是,由于我只读取设置并绘制某些事件的墙纸,墙纸的更改在触发这些事件之前不会发生 希望您能提供以下解决方案:)thnx 有人吗(最好是每帧绘制一次壁纸,但当可视性发生变化时(wallparservice.
有人吗(最好是每帧绘制一次壁纸,但当可视性发生变化时(wallparservice.Engine.onVisibilityChanged(boolean))
您可以通过调用GLSurfaceView.onResume()和onPause()来完成此操作。
您有两个选择。检查
onVisibilityChanged()
中的首选项值并相应地更新墙纸。或者使用OnSharedPreferenceChangeListener
让您的引擎知道用户何时更改了首选项
后者的示例。
让您的引擎
实现OnSharedPreferenceChangeListener
接口
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();
}
}
我也在寻找同样的东西,我发现了自己的解决方案;你可以在你的设置活动中使用实时数据,然后在你的服务中观察它。这使它变得更容易。现在我可以让我的应用程序更高效。谢谢!:)我已经实现了暂停和恢复,但我只是不想看每个onVisibilityChanged通话的全部偏好。不过还是要谢谢你的回答:)