我尝试使用此代码从前台服务开始的广播接收器开始活动
val intent = Intent("my.intent")
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context?.startActivity(intent)
活动已开始。但是,当我看到活动并按主页按钮时,下一次接收方尝试启动该活动时,该活动将不会开始,如果在显示活动时按返回按钮,则下一次活动将从接收方开始,而不会任何问题。
我试图将差异标志设置为开始意图。 设置singleTask和singleInstance 另外,我尝试覆盖onBackPressed()以完成活动并从onPause()调用finish()。但是行为不会改变。 我从主要活动中启动前台服务,在这种情况下,我有相同的行为。如果我启动前台服务(只需单击按钮即可),然后按主屏幕以这种方式最小化应用,则广播活动也不会启动 我展示了吐司面包接收器,所以我确定必须开始活动。
我的清单
<activity
android:name=".NeededActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="my.intent" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
有什么区别以及如何解决它,我每次在接收器中调用startActivity时都需要启动Activity。 我已经在Android 10上测试了我的代码。
答案 0 :(得分:0)
您可以使用Intent中的clearTask
标志
有关意图标志的更多信息,请参阅Activity Intent的官方文档
而且,由于您使用的是Kotlin,为什么不尝试Anko
像这样使用它
startActivity(intentFor<NeededActivity>().clearTask().newTask())