我不想使用:
onSharedPreferenceChanged
因为每次设置出现问题时我的动态壁纸都会重新初始化(使其崩溃,堆栈溢出!)
相反,我想要调用
onDestroy()
在具有ATM的主要活动期间从设置中进行修改:
SharedPreferences.OnSharedPreferenceChangeListener
我想这样做,因为它节省了性能和允许我重新初始化我的主要课程。
我该怎么做呢?
答案 0 :(得分:1)
只要设置更改,就会调用OnSharedPreferenceChangeListener
和OnSharedPreferenceChanged()
?这实际上是他们在那里的目的,所以当设置改变时,他们的效果会立即被看到。
我不太明白为什么要调用onDestroy()?这只在应用程序停机时调用...所以我猜你可以简单地说:
this.finish(); // <- Will eventually call onPause(), onDestroy()
如果您要重新启动应用程序,为什么不说完活动,并通过以下方式开始新的应用程序:
StartActivity();
因此,您完全使用新数据重新初始化您的活动?
但是我会坚持使用你的OnSharedPreferenceChanged()
并尝试查找实际导致错误的内容,而不是抽象出来。
<强> [更新] 强>
MainActivity.java
[...]
public static void DoSomething(){
// Do something in main, from any other?
}
[...]
PreferenceActivity.java
@Override
public void onDestroy(){
super.onDestroy();
MainActivity.DoSomething();
}