繁体   English   中英

重新启动应用程序时重新启动Android活动

[英]Restart Android activity on relaunch of application

我在一个Android应用程序中进行了3个活动。 当我在每个活动中按返回按钮时,应用程序将退出。 使用以下代码。

当我从第三个活动中按回去时,应用程序退出正常,但是当我通过单击应用程序图标重新启动该应用程序时,第三个活动将再次启动。 但是在这种“重新启动”时,我需要启动我的主要活动。

我尝试在“ onResume”上编写代码,但无法正常工作。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        moveTaskToBack(true);
        return true;
    }
        return super.onKeyDown(keyCode, event);
}

请帮我。 提前致谢

您可以使用以下方式解决此问题:在您的第三个Activity类中,输入以下代码,

    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    startActivity(new Intent(getBaseContext(), YourSecondActivity.class));
    finish();
}

同样的方法,您可以参加第二个活动课程

    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    startActivity(new Intent(getBaseContext(), YourFirstActivity.class));
    finish();
}

最后,您可以将其放入您的主班

    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}
  1. 创建三个活动-A,B和C
  2. 在活动A中-调用startActivity(B)时,也调用finish()。 范例-

      public void onButtonClick() // Some method { startActivity(intentForB); finish(); } 
  3. 同样,从B转到C时-

      public void onButtonClick() { startActivity(intentForC); finish(); } 
  4. 当用户使用Activity C并按下后退按钮时,应用程序将关闭(无需显式编写后退按钮处理)。

希望这可以帮助。

moveTaskToBack()将包含此活动的任务移到活动堆栈的后面。

OnBackpressed()并在所有活动中使用finish() (因为您说您想在按返回按钮后完成所有活动)

public void OnBackpressed()
{
 finish();
}

简而言之,在您的代码中执行以下操作:

activity 1

Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();

activity 2

Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();

如果在前两个活动中使用了此功能,则在第三个活动中无需处理OnBackpressed() 因为当活动检测到用户按下返回键时将调用OnBackpressed() 默认实现只是完成当前活动,但是您可以覆盖此活动以执行所需的任何操作。

在第一次启动活动中,请在您的AndroidManifest.xml和android:clearTaskOnLaunch =“ true”中使用此代码。

 <activity
        android:name="com.example.package.SplashActivity"
        android:label="@string/app_name"
        android:clearTaskOnLaunch="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

如果要使用按键事件,请在您的活动中使用以下代码:

@Override
    public boolean dispatchKeyEvent(KeyEvent event)
    {
        boolean result = false;
        switch(event.getKeyCode())
        {
            case KeyEvent.KEYCODE_BACK:
                finish(); // or moveTaskToBack(true);
                result = true;
                break;
             default:
                result= super.dispatchKeyEvent(event);
                break;
         }
        return result;
    }

如果要退出所有3个Activity,则必须在启动新Activity时使用finish()关闭当前Activity。

在首次启动活动中,请在您的AndroidManifest.xml和android:launchMode =“ singleTop”中使用此代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM