首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IllegalArgumentException: setTaskFromReuseOrCreateNewTask

IllegalArgumentException: setTaskFromReuseOrCreateNewTask
EN

Stack Overflow用户
提问于 2019-10-24 21:27:51
回答 1查看 329关注 0票数 3

当我尝试启动一个活动时,我会遇到下一个崩溃:

代码语言:javascript
复制
2019-10-24 15:12:29.887 4245-4296/fr.zapotec.eliodroid.tv E/AndroidRuntime: FATAL EXCEPTION: Thread-6
Process: fr.zapotec.eliodroid.tv, PID: 4245
java.lang.IllegalArgumentException: setTaskFromReuseOrCreateNewTask: task=TaskRecord{6e69142 #1643 A=fr.zapotec.eliodroid.tv U=0 StackId=1 sz=3} is in a different stack (1) than the parent of r=ActivityRecord{8062424 u0 fr.zapotec.eliodroid.tv/fr.zapotec.eliodroid.SplashActivity t1644} (0)
    at android.os.Parcel.readException(Parcel.java:1955)
    at android.os.Parcel.readException(Parcel.java:1897)
    at android.app.IActivityManager$Stub$Proxy.startActivities(IActivityManager.java:6812)
    at android.app.Instrumentation.execStartActivitiesAsUser(Instrumentation.java:1677)
    at android.app.Instrumentation.execStartActivities(Instrumentation.java:1632)
    at android.app.ContextImpl.startActivities(ContextImpl.java:910)
    at android.app.ContextImpl.startActivities(ContextImpl.java:884)
    at android.content.ContextWrapper.startActivities(ContextWrapper.java:399)
    at fr.zapotec.eliodroid.utils.LaunchActivityUtils.launchTVLastProgram(LaunchActivityUtils.java:22)
    at fr.zapotec.eliodroid.standby.StandbyManager.launchAction(StandbyManager.java:253)
    at fr.zapotec.eliodroid.standby.StandbyManager.onEventReceived(StandbyManager.java:141)
    at fr.zapotec.eliodroid.handset.HandsetEventDispatcherImpl.handleKeyPress(HandsetEventDispatcherImpl.java:229)
    at fr.zapotec.eliodroid.handset.HandsetEventDispatcherImpl.handleKeyPress(HandsetEventDispatcherImpl.java:204)
    at fr.zapotec.eliodroid.handset.HandsetEventDispatcherImpl.onMessageReceived(HandsetEventDispatcherImpl.java:165)
    at fr.zapotec.handsetbluetooth.HandsetManagerImpl.dispatchMessage(HandsetManagerImpl.java:49)
    at fr.zapotec.handsetbluetooth.MessageManager.onNewMessageReceived(MessageManager.java:119)
    at fr.zapotec.handsetbluetooth.HandsetThread.listenAndWrite(HandsetThread.java:126)
    at fr.zapotec.handsetbluetooth.HandsetThread.run(HandsetThread.java:56)

这是清单文件:

代码语言:javascript
复制
        <activity
        android:launchMode="singleTask"
        android:name=".SplashActivity"
        android:noHistory="true"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:launchMode="singleTask"
        android:noHistory="true"
        android:name=".StandbyActivity"/>
    <activity
        android:launchMode="singleTask"
        android:name=".main.SimpleMainActivity"/>
    <activity
        android:launchMode="singleTask"
        android:name=".main.InstallActivity"/>

我需要活动'SimpleMainActivity‘是一个唯一的实例(这就是为什么'singleTask')此活动可以启动由于蓝牙事件(由蓝牙设备触发)或由于在非常特定的情况下给定的时间。

启动活动的方法是:

代码语言:javascript
复制
startActivity(new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));

当我尝试几乎同时从两个不同的源启动活动时,出现了崩溃。

有人知道如何在不从我的活动中删除'singleTask‘的情况下解决这个问题吗?

作为参考,我的应用程序是“默认启动器”,所以如果系统需要显示启动器,可以启动"SplashActivity“。SplashActivity仅显示闪屏并启动第一个活动(SimpleMainActivity.class)

EN

回答 1

Stack Overflow用户

发布于 2019-11-20 05:32:32

可能起作用的是使用singleToplaunchMode,并设置标志FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOP。对于由通知启动的活动,docs建议您这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58542445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档