Android 当按下导航栏上的Home键时,阻止应用程序返回BootActivity

Android 当按下导航栏上的Home键时,阻止应用程序返回BootActivity,android,android-intent,android-manifest,android-lifecycle,Android,Android Intent,Android Manifest,Android Lifecycle,我正在构建一个Android应用程序,启动第三方应用程序——这两个应用程序都是全屏运行的 当第三方应用程序启动时,如果我从底部向上滑动,我会看到Android导航栏(良好)-但是,如果我按下导航栏上的Android Home按钮,第三方应用程序将退出(良好),但我的应用程序返回到主引导活动,而不是从中启动应用程序的活动 我的应用程序清单包含 <activity android:name=".boot.BootActivity" android:configCha

我正在构建一个Android应用程序,启动第三方应用程序——这两个应用程序都是全屏运行的

当第三方应用程序启动时,如果我从底部向上滑动,我会看到Android导航栏(良好)-但是,如果我按下导航栏上的Android Home按钮,第三方应用程序将退出(良好),但我的应用程序返回到主引导活动,而不是从中启动应用程序的活动

我的应用程序清单包含

<activity android:name=".boot.BootActivity"
    android:configChanges="keyboardHidden|locale|layoutDirection"
    android:excludeFromRecents="true"
    android:label="@string/app_name"
    android:launchMode="singleTask"
    android:screenOrientation="landscape"
    android:windowSoftInputMode="stateAlwaysHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.HOME" />
    </intent-filter>
</activity>

<activity android:name=".main.MainActivity"
    android:configChanges="keyboardHidden|locale|layoutDirection"
    android:label="@string/title_activity_main"
    android:launchMode="singleTask"
    android:screenOrientation="landscape"
    android:windowSoftInputMode="stateAlwaysHidden" />

BootActivity在等待用户选择一个按钮开始加载MainActivity之前执行一系列预加载和模型生成,MainActivity显示第三方应用程序的菜单和概要

当第三方启动时,我们在Android导航栏上向上滑动并按Home键,logcat会同时显示“Android.intent.action.MAIN”和“Android.intent.category.Home”

如上所述,这会导致应用程序返回启动活动-但我希望第三方应用程序退出并返回MainActivity中的应用程序概要


可以通过编程方式添加、删除或临时禁用意图过滤器吗?

通常使用这些特殊启动模式(
singleTask
)是个坏主意。如果您的
BootActivity
正在启动
HomeActivity
,则此操作将不会在新任务中运行,即使启动模式会暗示这一点,因为这两个活动都具有相同的
taskAffinity
。如果您确实想让它们在不同的任务中运行,则需要设置其中一个(或两者)的
taskAffinity
,使它们不相同。阅读一点关于taskAffinity的工作原理。

兄弟,你的设备如何处理你的第三方应用程序是操作系统内存空间的问题。你在第二个活动中执行的任务比处理数据保存状态()和恢复状态()和恢复状态()和暂停状态()更繁重否则,它将根据意图文件管理器指导第一个活动