我尝试从广播接收器开始一项活动,该接收器使用此代码从前台服务开始
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上测试了我的代码。
最佳答案
您可以使用Intent中的clearTask
标志
有关意图标志的更多信息,请参阅官方文档,网址为Activity Intent。
另外,由于您使用的是Kotlin,所以为什么不尝试Anko
这样使用
startActivity(intentFor<NeededActivity>().clearTask().newTask())