【问题标题】:What can cause startTaskLock to pin then immediately unpin an activity?什么会导致 startTaskLock 固定然后立即取消固定活动?
【发布时间】:2017-08-30 21:33:21
【问题描述】:

我一直在尝试使用 android 6.0 任务锁定/固定来锁定我的活动。它似乎工作不可靠。有时当我启动我的应用程序时,它会固定,并且一切都像它应该隐藏的那样。其他时候它会尝试,但实际上并不需要。例如,我得到一个说“Screen Pinned”的吐司,然后是一个说“Screen Unpinned”的吐司。最终结果是应用程序没有完全固定(隐藏主页和任务切换器图标)。但是一旦进入这个循环,即使我继续尝试,它似乎也不起作用。这也是启动时的问题,类似于此处报告的内容:

Android pin activity on boot

有什么方法可以判断是什么导致 android 取消固定我的活动?这很令人沮丧,因为它没有说明为什么它不起作用。

【问题讨论】:

  • 我最近了解到,启动另一个 Activity 会强制固定的 Activity 不再被固定。

标签: android android-screen-pinning


【解决方案1】:

我们的 Lenovo 平板电脑无法在 Home 活动所在的位置固定任务。解决方案是在两个不同的任务中设置两个活动。

家庭活动

此活动在启动时作为启动器启动,其唯一责任是立即打开主要活动。请注意,它是透明的并且具有不同的任务亲和性

<activity
    android:name=".HomeActivity"
    android:clearTaskOnLaunch="true"
    android:configChanges="orientation|screenSize"
    android:launchMode="singleTask"
    android:resumeWhilePausing="true"
    android:stateNotNeeded="true"
    android:taskAffinity="${applicationId}.home"
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

该活动还将在其onCreateonNewIntent 中启动主活动(因为它是singleTask 活动)。这是 Kotlin 中的代码:

class HomeActivity : Activity() {
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleIntent(intent)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        handleIntent(intent)
    }

    private fun handleIntent(intent: Intent) {
        val i = packageManager.getLaunchIntentForPackage(packageName)
        startActivity(i)
    }
}

主要活动

这是您的主要活动 - 应用程序的主要入口点,可以从任何启动器启动。它具有默认的任务关联性(等于应用程序 ID)。

<activity
    android:name=".webview.activity.RealWebViewActivity"
    android:clearTaskOnLaunch="true"
    android:configChanges="orientation|screenSize"
    android:exported="false"
    android:launchMode="singleTask"
    android:resumeWhilePausing="true"
    android:stateNotNeeded="true">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

</activity>

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多