gpt4 book ai didi

Android 启动器在启动器中按主页以转到默认屏幕

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:25 25 4
gpt4 key购买 nike

在默认的 android 启动器中,在另一个 Activity 中按主页将启动启动器。在启动器中再次按主页将重置为默认主屏幕页面。我不明白这是怎么做到的。无论启动器是否在前台,Android 都会发送相同的 Intent 。主页键也不能被用户应用程序拦截。

有办法实现吗?

最佳答案

Android sends the same intent whether the launcher is in the foreground or not.

正确。

Home key also cannot be intercepted by user apps.

正确。

I don't understand how this can be done.

如果对 startActivity() 的调用将导致将 Intent 传递给 Activity 的现有实例,则不会创建新实例(根据定义)并且现有实例使用 onNewIntent() 而不是 onCreate() 调用。

在主屏幕的情况下,通常真正主屏幕的 Activity 将使用 android:launchMode="singleTask"android:launchMode ="singleInstance" 在 list 中,例如:

    <activity
android:name="Launcher"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
android:theme="@style/Theme"
android:screenOrientation="nosensor"
android:windowSoftInputMode="stateUnspecified|adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MONKEY" />
</intent-filter>
</activity>

(来自 an old launcher in the AOSP)

然后, Activity 可以实现onNewIntent() 来做一些事情。对于上述旧发射器,its onNewIntent() includes :

            if (!mWorkspace.isDefaultScreenShowing()) {
mWorkspace.moveToDefaultScreen();
}

如果用户当前正在查看主屏幕 Activity 管理的屏幕集中的其他屏幕,这大概会使 UI 动画回到默认屏幕。

另一种触发 onNewIntent() 的方法是在调用 startActivity() 时有选择地触发 onNewIntent(),而不是使用 android:launchMode ,通过在 Intent 中包含适当的标志,例如 FLAG_ACTIVITY_REORDER_TO_FRONT

关于Android 启动器在启动器中按主页以转到默认屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13203536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com