每次应用程序来自android的后台时启动第一个屏幕

Posted

技术标签:

【中文标题】每次应用程序来自android的后台时启动第一个屏幕【英文标题】:Start the First screen each time app comes from background in android 【发布时间】:2018-09-21 03:50:58 【问题描述】:

我有一个包含 5 个活动(A、B、C、D、E)的应用。该应用程序可以在这些活动之间导航。当用户按下设备中的主页按钮时,应用程序进入后台,当应用程序进入前台后,应启动第一个活动,即 A 活动。

示例:应用程序在 D 活动中,按 home 后,应用程序进入后台,当再次进入前台时,它应该打开 A 活动而不是 D。

我尝试过的解决方案是启动模式,我为 A 活动 (singleInstance) 设置了启动模式但无法找到所需的解决方案。

【问题讨论】:

由于问题没有关于后退按钮的信息,也许Intent.FLAG_ACTIVITY_NO_HISTORY 标志是你需要的东西。 【参考方案1】:

对于启动相同的 Activity,您应该在应用程序进入后台时清除所有 Activity。当应用程序进入后台时,使用下面的代码将清除当前活动和堆栈中的所有其他活动。

对于 API 16+,使用

finishAffinity();

对于更低版本(android 4.1 更低版本),请使用

ActivityCompat.finishAffinity(YourActivity.this);

【讨论】:

感谢您的回复,这是唯一对我有用的解决方案【参考方案2】:

当您按下 Home-Button 时,更改为 Activity A。也许这会起作用:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)

    if (keyCode == KeyEvent.KEYCODE_HOME)
    
        Intent intent = new Intent(this, MyActivityName.class); 
        //replace MyActivityName.class with the name of your Activity A
        startActivity(intent);
    
    return super.onKeyDown(keyCode, event);

【讨论】:

【参考方案3】:

你可能会得到 ondestroy() 或 onpause() 方法。就可以了

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); //

【讨论】:

【参考方案4】:

您可以在清单文件中为 Activity A 设置 android:clearTaskOnLaunch="true" 以实现您想要的:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.beispieldomain.***xmlparse">

    <application
        ...
        <activity 
            android:name=".MainActivity"
            android:clearTaskOnLaunch="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

看看这里:

Managing TasksclearTaskOnLaunch

【讨论】:

以上是关于每次应用程序来自android的后台时启动第一个屏幕的主要内容,如果未能解决你的问题,请参考以下文章

从后台运行应用程序时重新启动应用程序时出现闪屏问题

Android性能优化第(八)篇---App启动速度优化之耗时检测处理

通过单击应用程序图标(来自后台)打开时反应本机android应用程序重新启动

Android添加全屏启动画面

Android应用启动时白屏或者黑屏处理办法

如何从后台服务的全屏意图通知Android中打开活动