問題は、メインクラス内にonConfigurationChangedを持つlivewallpaperがあることです。
コードは
public void onConfigurationChanged (Configuration newConfig){
if(MODE == 0) {
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
scene.setScale(1); //this is line 920
scene.setPosition(0, 0);
}
else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
scene.setScaleY(1.6f);
scene.setScaleX(0.6f);
scene.setPosition(120, -240);
}
}
else if (MODE == 1)
{
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
scene.setScaleY(0.6f);
scene.setScaleX(1.6f);
scene.setPosition(-240, 120);
}
else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
scene.setScale(1);
scene.setPosition(0, 0);
}
}
}
電話がオンになっている間はうまく機能しますが、電話が再起動されるとクラッシュが発生します
java.lang.NullPointerException
at org.example.example.examplelw.onConfigurationChanged(examplelw.java:920)
at android.app.ActivityThread.performConfigurationChanged(ActivityThread.java:3478)
at android.app.ActivityThread.handleConfigurationChanged(ActivityThread.java:3602)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4517)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
at dalvik.system.NativeStart.main(Native Method)
私の電話では、Nexus4とSamsungGalaxy S2は正常に動作し、電話を再起動してもクラッシュしませんが、他の一部のデバイスではクラッシュします。
これはLG-P990でも発生します。電話を再起動すると、向きの情報が表示されませんが、onConfigurationChangedが呼び出される理由がわかりません。