onResume()不是在物理设备中调用而是调用onCreate()

时间:2013-08-26 07:20:58

标签: android

我对它有点惊讶。我在我的活动中有一个onResume()。它在我的模拟器中调用并运行良好,但是在物理设备中三星galaxy注意特定的安装了jellybean,它没有被调用。相反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;
    }
}

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我想这就是发生的事情, 当您的应用程序不是Top应用程序时,活动管理器实际上会销毁该活动,它只会调用

    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