我尝试从广播接收器开始一项活动,该接收器使用此代码从前台服务开始

   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())

10-05 23:04
查看更多