Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问PreferenceActivity';是否在主活动中创建onDestroy()?_Java_Android_Live Wallpaper - Fatal编程技术网

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方法以在主活动中执行某些操作:-(