launchMode活动的问题

时间:2014-01-13 02:33:37

标签: android android-activity launchmode

我正在实施自定义启动器。我有两个活动:活动A使用launchMode:singleInstance或singleTask,以及活动B.

活动A是主屏幕。有两种情况:

  • 如果我设置Activity A launchMode:singleTask,我从Activity A调用Activity B(没关系)。在活动B中,如果我按Home键返回主屏幕,则屏幕为空(没有任何东西......)。
  • 如果我设置了活动A launchMode:singleInstance,我从活动A调用活动B,然后在转到活动B后显示一个空白屏幕(在这种情况下,我按Home键以显示主屏幕,它工作正常)

那么,如何解决这个问题呢?我想:从活动A调用活动B,然后直接转到活动B,当我按下主页键时,它会返回到主屏幕(活动A)。

2 个答案:

答案 0 :(得分:1)

在活动B中

,您可以使用以下代码和后退按钮

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent a = new Intent(this,A.class);
        a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(a);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}     

如果您想使用home键而不是使用以下代码覆盖Home键

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
       if(keyCode == KeyEvent.KEYCODE_HOME)
        {
          //yours code action
return true;
        }
       if(keyCode==KeyEvent.KEYCODE_BACK)
       {
           //yours code action
return true;
       }
      return super.onKeyDown(keyCode, event);
    }

请你也可以试试这个

@Override
    public boolean dispatchKeyEvent(KeyEvent event) {

        if ( (event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) {
            //yours code
            return true;
        }
        else
            return super.dispatchKeyEvent(event);
    }

答案 1 :(得分:0)

尝试这个...... 从清单中删除launchmode属性,然后从活动A调用活动B. 使用finish()方法如下:

finish();
            Intent intent=new Intent(getApplicationContext(),ActivityB.class);
            startActivity(intent);