gpt4 book ai didi

android - (re) 显示一个 singleTask Activity

转载 作者:行者123 更新时间:2023-11-29 16:07:03 25 4
gpt4 key购买 nike

我在将单一任务 Activity 重新显示在 View 中时遇到了一些麻烦。

list :

<activity
android:name=".test.MyActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:icon="@drawable/my_launcher"
android:label="@string/title_activity_my"
android:launchMode="singleTask"
android:taskAffinity=".myTask"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

我的 Activity 代码:

Intent i = new Intent(getApplicationContext(), MyActivity.class);
i.putExtra("blah", stuff);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK); // I have tried almost every flag combo here!
startActivity(i);

场景:

OnBackPressed() Activity 调用 moveTaskToBack(隐藏我的 Activity )。收到特定的传入事件后,将调用上述 Intent 代码,但是什么也没有发生!?!没有触发 OnNewIntent(),没有触发 onCreate...

但是:如果我还向 Notification 对象添加一个单独的 PendingIntent,它会起作用吗!?

    Intent notificationIntent = new Intent(getApplicationContext(),MyActivity.class);
notificationIntent.putExtra("blah", stuff);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notif = new Notification(icon,text,when);
notif.flags |= Notification.FLAG_ONGOING_EVENT;
notif.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, contentIntent);
m_notifMgr.notify(1, notif);

我不明白为什么它在 PendingIntent(触发 onNewIntent)中起作用,但在直接调用 startActivity 时不起作用。

请指教。谢谢。

更新(1):

我简化了事情并将相同的逻辑放入一个小型测试应用程序中:

Activity 'A' = singleTask,有两个按钮:btnStartTimer 启动计时器,btnMoveToBack 将 'A' 移回。当计时器到期时,将调用创建“B”的 Intent 。

Activity “B”= 普通的“hello world”屏幕。

结果:

(i) 如果我通过单击 btnStartTimer 启动计时器,并且不按 btnMoveToBack,则会调用 Intent 代码并出现“B”。

(ii) 如果我通过单击 btnStartTimer 启动计时器,并按 btnMoveToBack,则仍会调用 Intent 代码(由日志消息指示)并且“B”不会出现——日志记录显示 Activity“B”onCreate NOT打电话。

这引发了一个问题——我真的可以从未显示的 Activity 中获得要处理的 Intent 吗?

最佳答案

我终于破解了这个。看起来,无法从暂停的 (singleTask) Activity 中触发 Intent (具有任何后果)。因此,我唯一的选择是实现一个 IntentService(利用 Intent 标志 FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_NEW_TASK),这反过来会创建“重新显示”我的 singleTask Activity 所需的 Intent 。

敲核桃有点像大锤,但这是我能找到的唯一有效的方法。

关于android - (re) 显示一个 singleTask Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351763/

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