onCreate()与数据库插入

时间:2012-04-20 02:54:29

标签: android

我的应用有很高的分数。当游戏活动结束时,它使用Intent.putExtra()将游戏状态传递给高分活动

onCreate()从额外中提取游戏并将该行插入数据库表。

这很好用......直到我将设备转为横向模式。 onCreate()再次将行插入高分表。 Doh,我比那更清楚,哈哈。

好的,那么只允许插入一次的“最佳实践”方法是什么?我不想核实游戏数据,因为我希望显示有关游戏的信息。

思路: 1.在附加内容中添加一个标志,并在插入行后清除它。如果标志清除,请不要再次插入行。 2.组织数据库以在重复插入上引发密钥违规失败。 3.从额外内容中复制游戏,将其从附加内容中删除,并在onPause()和onResume()中保存/恢复

你会如何处理这种情况?

2 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作设置标记:

@Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            outState.putBoolean("high_score_saved", true);

        }

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                    if (!savedInstanceSate.getBoolean("high_score_saved", false){
                        //save high score!

                     }
    }

答案 1 :(得分:1)

您可以将属性android:configChanges =“orientation”添加到AndroidManifest.xml中的活动声明中。 像

<activity android:name=".TestActivity" android:configChanges="orientation" /> 

如果您的活动在方向更改时未更改其布局,则可以执行此操作。如果您想更改方向更改的布局,可以通过覆盖此方法

来执行此操作
@Override
public void onConfigurationChanged(Configuration newConfig) {

  super.onConfigurationChanged(newConfig);

  if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
      //your code
  } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
     //your code
  }
}