0

我对此有点惊讶。我的活动中有一个 onResume()。它在我的模拟器中被调用并且运行良好,但在安装了 jellybean 的物理设备三星 Galaxy Note 中,它没有被调用。而是调用 onCreate()一直。为什么会这样?

public void onResume(){
    super.onResume();
    if(firsttime){
        try {
            Toast.makeText(getApplicationContext(), "Resuming Activity",Toast.LENGTH_LONG).show();
            addReminder();
        } catch(Exception exception) {
            exception.printStackTrace();
        }
    } else {
        firsttime=true;
    }
}

这是我的代码。firsttime 是一个静态布尔变量。它用于防止在第一次启动应用程序时调用 onResume()

4

3 回答 3

0

考虑到您当前的情况,您应该在首选项中保存变量,而不是依赖于活动生命周期,因为生命周期取决于很多事情。在这种情况下使用静态变量通常是不好的选择。我认为这应该可以解决您的问题。

于 2013-08-26T12:03:46.297 回答
0

我认为这是发生的情况,当您的应用程序不是顶级应用程序时,活动管理器实际上销毁了活动,它只调用

    public void onSaveInstanceState(Bundle savedInstanceState)

    onStop

打电话,所以没有

    noResume

将被调用。

正确的做法是,当把这个活动的所有状态放在

    public void onSaveInstanceState(Bundle savedInstanceState)

叫。

在你的 onCreate() 函数中,做这样的事情

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); // Always call the superclass first

    // Check whether we're recreating a previously destroyed instance
    if (savedInstanceState != null) {
        // Restore value of members from saved state
        mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
        mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
    } else {
        // Probably initialize members with default values for a new instance
    }
    ...
}

检查您是否有一些已保存的状态。

大多数代码是从 android 开发者网站复制的:http: //developer.android.com/training/basics/activity-lifecycle/recreating.html

于 2013-08-26T12:23:12.073 回答
0

尝试在 onResume 中打印一些内容并在 LogCat 中检查它...... onResume 中的代码可能会导致这种情况。或者你能详细说明你的问题吗?

于 2013-08-26T07:24:22.630 回答