微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 在OnResume之后立即调用OnPause

编辑*在 Android设备上测试时发生此问题.在对emultor进行测试时,不会出现此问题.

我正在开始一个新的活动,我看到在onResume被调用后立即调用onPause.如果我查看日志,它会在onResume之后进入Idle.因此在调用onResume之后立即导致onPause.

调用者活动 – 通过意图调用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");
    }
}

日志

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,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

解决方法

我在我的测试活动中尝试了它,但我没有得到你的问题.我的MainActivity和TestActivity上只有一个按钮.

在这里找到了一些东西:Pausing and Resuming an Activity.

这是有趣的部分:

Note: When the system calls your activity’s onPause() method,the system may be signaling that the activity will be paused for a moment and the user may return focus to your activity,or that the app is running in multi-window mode. However,this method call may also be the first indication that the user is leaving your activity.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐