Java 如何访问PreferenceActivity';是否在主活动中创建onDestroy()?
我不想使用:Java 如何访问PreferenceActivity';是否在主活动中创建onDestroy()?,java,android,live-wallpaper,Java,Android,Live Wallpaper,我不想使用: onSharedPreferenceChanged 因为我的实时壁纸在每次使用设置时都会重新初始化(使其崩溃、堆栈溢出!) 相反,我想打电话给 onDestroy() 方法根据ATM主要活动期间的设置: SharedPreferences.OnSharedPreferenceChangeListener 我想这样做是因为它节省了性能&允许我重新初始化我的主类 如何执行此操作?每当更改设置时,都应该调用OnSharedPreferenceChangeListener和OnS
onSharedPreferenceChanged
因为我的实时壁纸在每次使用设置时都会重新初始化(使其崩溃、堆栈溢出!)
相反,我想打电话给
onDestroy()
方法根据ATM主要活动期间的设置:
SharedPreferences.OnSharedPreferenceChangeListener
我想这样做是因为它节省了性能&允许我重新初始化我的主类
如何执行此操作?每当更改设置时,都应该调用
OnSharedPreferenceChangeListener
和OnSharedPreferenceChanged()
?这就是他们在那里的目的,所以当设置被改变时,他们的效果会立即被看到
我不太明白您为什么要调用onDestroy()?这仅在应用程序停止运行时调用。。。所以我想你可以简单地说:
this.finish(); // <- Will eventually call onPause(), onDestroy()
所以你完全是在用新数据初始化你的活动
但是,我会坚持使用您的on共享首选项changed()
,并尝试找出导致错误的真正原因,而不是抽象过程
[更新]
MainActivity.java
[...]
public static void DoSomething(){
// Do something in main, from any other?
}
[...]
@Override
public void onDestroy(){
super.onDestroy();
MainActivity.DoSomething();
}
PreferenceActivity.java
[...]
public static void DoSomething(){
// Do something in main, from any other?
}
[...]
@Override
public void onDestroy(){
super.onDestroy();
MainActivity.DoSomething();
}
啊,我正在从PreferenceActivity调用onDestroy(),这比调用SharedPreferenceChanged()更有效。仅当此活动的首选项屏幕关闭时,才会调用onDestroy()。我只是想知道如何在主活动中调用相同的函数。@Olly Dixen:为什么要在主活动中调用onDestroy()?这意味着它正在被关闭和GC'ed的过程中。因此需要完全重新启动,并且不可能更高效吗?我可能只是误解了你的问题,如果是的话。。。抱歉:-不用担心,它不是从主活动调用onDestroy(),而是从首选项活动调用onDestroy()。我的想法是在首选项关闭时更新主活动中的值。我以前用OnChanged做过,但它出现了一些错误和性能问题。那么,你知道我将如何调用并调用一个主类的onDestory()吗?如何在没有指针或引用的情况下访问一个主类?@Olly Dixen:如果你创建了一个公共静态函数,你就不能说“MyMainClass.PublicStaticFunctionIWant()”吗??然后,只需在该静态方法中执行任何需要的操作即可?设置首选项活动仅从XML首选项调用,然后每当用户在livewallpaper上按下“设置”时,就会调用它。问题是从Preferences活动获取onDestoyed方法以在主活动中执行某些操作:-(