活动不会触发onStop事件

时间:2017-11-29 07:45:56

标签: java android

我的代码列表如下:

public class MainActivity extends Activity{
    private String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate");
    }

    @Override
    public void onBackPressed() {
        Log.d(TAG, "onBackPressed");
        moveTaskToBack(true);
    }

    @Override
    protected void onStart() {
        Log.d(TAG, "onStart");
        super.onStart();
    }

    @Override
    protected void onResume() {
        Log.d(TAG, "onResume");
        super.onResume();
    }

    @Override
    protected void onPause() {
        Log.d(TAG, "onPause");
        super.onPause();
    }
    @Override
    protected void onStop() {
        Log.d(TAG, "onStop");
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        Log.d(TAG, "onDestroy");
        super.onDestroy();
    }
}

我的测试结果是:

11-29 15:20:09.850  4626  4626 D MainActivity: onCreate

11-29 15:20:09.851  4626  4626 D MainActivity: onStart

11-29 15:20:09.852  4626  4626 D MainActivity: onResume

11-29 15:20:18.887  4626  4626 D MainActivity: onBackPressed

11-29 15:20:18.909  4626  4626 D MainActivity: onPause

11-29 15:20:19.718  4626  4626 D MainActivity: onStop

11-29 15:20:29.471  4626  4626 D MainActivity: onStart

11-29 15:20:29.471  4626  4626 D MainActivity: onResume

11-29 15:20:32.030  4626  4626 D MainActivity: onBackPressed

11-29 15:20:32.050  4626  4626 D MainActivity: onPause

我的测试步骤:

  1. 输入任何第三个应用程序的用户界面

  2. 使用eclipse运行或调试我的应用程序,然后我的应用程序将覆盖第3个应用程序并显示在顶部;

  3. 然后尽快按后退键多次,然后转到桌面(家庭发射器)。

  4. 如果结果有onStop,也许您的按下不那么快,然后尝试。

    现在我想知道这项活动是否可见,但有时候无法调用onStop,请帮帮我。谢谢!

1 个答案:

答案 0 :(得分:0)

删除moveTaskToBack(true);

并添加super.onBackPressed();

@Override
public void onBackPressed() {
    Log.d(TAG, "onBackPressed");
    super.onBackPressed();
}

修改

在一秒钟内,让它不要按两次。

private long lastTime;

@Override
public void onBackPressed() {
    long currentTime = System.currentTimeMillis();
    if (currentTime - lastTime < 1000) {
        moveTaskToBack(true);
    } else {
        Log.e("TAG", "pressed again");
        lastTime = currentTime;
    }
}