代码之家  ›  专栏  ›  技术社区  ›  MbaiMburu

当前活动处于暂停状态后,如何转到上一个活动

  •  0
  • MbaiMburu  · 技术社区  · 6 年前

    我有两项活动A&B、 A开始B像这样

    Intent mainPage = new Intent( MainActivity.this, Profile.class );
        Bundle extraMain = new Bundle();
        extraMain.putString( "userName", userName );
        extraMain.putString( "memberNo", memberNo );
        mainPage.putExtras( extraMain );
        startActivity( mainPage );
    

    然后B可以像这样回到A

    B.this.finish();
    

    此过程工作正常,直到暂停活动B,然后继续并尝试返回到A。而不是完成B并继续A,而是转到设备主屏幕。

    这是这两个活动的清单代码。主活动为A,配置文件为B。

     <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" />
    
        <activity
            android:name="profile.Profile"
            android:launchMode = "singleInstance" />
    

    我想我可能没有正确处理活动的状态,请帮忙

    3 回复  |  直到 6 年前
        1
  •  1
  •   Stephan Branczyk    6 年前

    您的问题是代码的这一部分:

    android:launchMode = "singleInstance"
    

    你强迫它只维护 single instance

    摆脱它,它会做你想要的。

        2
  •  0
  •   Ahmad Ayyaz    6 年前

    您可以通过以下方式在onPaused方法中完成活动来实现这一点

    @Override
    public void onPause() 
    {
        super.onPause();
        B.this.finish();
    }
    
        3
  •  0
  •   Andronymous    6 年前

    从内存中清除活动A时会出现此状态。 对于实践,请覆盖pic中显示的所有活动生命周期方法,并打印一些日志以查看发生了什么。

    Activity Life Cycle

    解决这个问题有两种方法,你可以选择哪一种。

    第一种解决方案:

    而不是这一行代码

    B.this.finish();
    

    使用

    B.this.onBackPressed();
    

    活动A将启动。

    第二种解决方案:

    打开活动B时完成活动A,然后在活动B中重新启动活动A,而不是 B.this.finish();

    you can read this blog 有关活动生命周期和启动模式的更多信息