Android OnResume之后立即调用OnPause

Android OnResume之后立即调用OnPause,android,android-intent,android-activity,android-lifecycle,Android,Android Intent,Android Activity,Android Lifecycle,编辑*在android设备上测试时出现此问题。在乳化器上测试时不会出现此问题 我正在开始一个新的活动,我看到onResume调用后立即调用onPause。如果我查看日志,它会在onResume之后变为空闲。因此,在调用onResume之后立即导致onPause 调用方活动-通过intent在onClick上调用MainActivity public class TestActivity extends AppCompatActivity implements View.OnClickListe

编辑*在android设备上测试时出现此问题。在乳化器上测试时不会出现此问题


我正在开始一个新的活动,我看到onResume调用后立即调用onPause。如果我查看日志,它会在onResume之后变为空闲。因此,在调用onResume之后立即导致onPause

调用方活动-通过intent在onClick上调用MainActivity

public class TestActivity extends AppCompatActivity implements View.OnClickListener{

    String TAG = "acr";
    Button testBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        testBtn = (Button) findViewById(R.id.testBtn);
        testBtn.setOnClickListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG, "on pause called on TestActivity ");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "on resume called on  TestActivity ");
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.testBtn:
                Intent mainIntent = new Intent(this, MainActivity.class);
                TestActivity.this.startActivity(mainIntent);
                break;
        }
    }
}
有bug的活动

public class MainActivity extends AppCompatActivity{

    public static final String TAG = "acrx";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG, "on pause called on mainactivity");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "on resume Called on Main activity");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "on stop Called on Main activity");
    }
}
日志


我在我的测试活动中试过了,我没有发现你的问题。我的MainActivity和TestActivity上只有一个按钮

我在这里发现了一些东西:

这是有趣的部分:

注意:当系统调用活动的onPause()方法时,系统可能会发出信号,表示活动将暂停片刻,用户可能会将焦点返回到活动,或者应用程序正在多窗口模式下运行。但是,此方法调用也可能是用户离开活动的第一个指示


我也有同样的问题,对我来说,这与活动启动和屏幕未打开有关-我只是在屏幕关闭后才看到它(例如,在触摸电源按钮后,然后再次回家继续)

这是其他人也看到过的一种行为——我发现这个问题和答案具有有用的参考价值:

帮助我理解这种行为的关键引语是:

请记住,onResume并不是用户可以看到您的活动的最佳指示器;系统窗口(如键盘防护装置)可能在前面。使用onWindowFocusChanged(布尔值)确定用户可以看到您的活动


这很奇怪,我创建了一个新项目来测试它,但仍然存在同样的问题。在我的两部三星手机上测试,都有相同的错误。你认为这是因为手机而不是代码吗?我有一款三星Galaxy Tab E-Lite平板电脑。我在调试和正常模式下进行了尝试。所以我不知道。@m1alesis,你找到解决办法了吗?我想了很多。如果你寄给我你的测试项目,我会在我的平板电脑上尝试。不幸的是,还没有解决方案,但我最近在emulator上测试了代码,没有问题,但我在手机上遇到了问题。到目前为止,我已经在两部手机上进行了测试,两部都有问题。这绝对是针对android活动周期的。。它可能是一只虫子。在应用程序启动后,您是否打开过任何应用程序?我知道,如果需要将结果发送到某个活动,可能会出现这种临时暂停,但该活动已经恢复。这里不是这样,但这种暂停可能也会发生在其他情况下。@Muhammadhafiqqqmal我还没有打开任何其他应用程序。它立刻发生。在调用onResume后的1秒内。
12-06 23:24:19.751 22983-22983/com.example.m1alesis.smartcardreader I/acrx: on resume Called on Main activity
12-06 23:24:19.751 22983-22983/com.example.m1alesis.smartcardreader D/SecWifiDisplayUtil: Metadata value : SecSettings2
12-06 23:24:19.751 22983-22983/com.example.m1alesis.smartcardreader D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{5ce8491 I.E...... R.....ID 0,0-0,0}
12-06 23:24:19.781 22983-23012/com.example.m1alesis.smartcardreader D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [1440x2560]-format:1
12-06 23:24:19.811 22983-22983/com.example.m1alesis.smartcardreader W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
12-06 23:24:19.831 22983-22983/com.example.m1alesis.smartcardreader D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1
12-06 23:24:19.871 22983-23012/com.example.m1alesis.smartcardreader D/OpenGLRenderer: endAllActiveAnimators on 0x7f9c17ec00 (RippleDrawable) with handle 0x7f9ccc8b60
12-06 23:24:19.871 22983-22983/com.example.m1alesis.smartcardreader I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@fa2f707 time:376798424
12-06 23:24:20.131 22983-22983/com.example.m1alesis.smartcardreader V/ActivityThread: updateVisibility : ActivityRecord{e78cff6 token=android.os.BinderProxy@a67fd36 {com.example.m1alesis.smartcardreader/com.example.m1alesis.smartcardreader.TestActivity}} show : false
12-06 23:24:31.561 22983-22983/com.example.m1alesis.smartcardreader I/acrx: on pause called on mainactivity
12-06 23:24:31.701 22983-22983/com.example.m1alesis.smartcardreader I/acrx: on resume Called on Main activity
12-06 23:24:31.721 22983-22983/com.example.m1alesis.smartcardreader I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@fa2f707 time:376810271