0

旋转屏幕时,我失去了与应用计费的连接。这是我onDestroy下面的方法:

@Override
    protected void onDestroy() {
        super.onDestroy();
        if (isFinishing()) {
            Log.d(tag, "Destroying helper.");
            if (mHelper != null) {
                mHelper.dispose();
                mHelper = null;
            }
        }
        Toast.makeText(this, "onDestroy " + mHelper, Toast.LENGTH_SHORT).show();
    }

这表明当屏幕方向随着活动未完成而发生变化时,mHelper 仍然不为空,然后在我的 onCreate 方法中mHelper为空。

如何防止屏幕旋转这样做?

4

1 回答 1

1

默认情况下,方向更改会导致系统销毁并重新创建您的 Activity,要更改此行为,请更改 Activity 在 AndroidManifest.xml 中的条目:

<activity android:name=".MyActivity"
          android:configChanges="orientation"
          android:label="@string/app_name">

它告诉 Android 您希望自己更改处理配置,因此当方向发生更改时不会重新启动 Activity,但会调用当前 Activity 实例的 onConfigurationChanged() 方法。

单例示例:

public class SingletonObjectDemo {

    private static SingletonObject singletonObject;
    // Note that the constructor is private
    private SingletonObjectDemo() {
        // Optional Code
    }
    public static SingletonObjectDemo getSingletonObject() {
        if (singletonObject == null) {
            singletonObject = new SingletonObjectDemo();
        }
        return singletonObject;
    }
}

您可以在此处查看有关如何处理方向更改的更多信息

于 2013-07-13T02:13:20.803 回答