活动不是从“主页”按钮之后的广播接收器开始,而是从“返回”按钮之后的

时间:2019-09-11 21:32:24

标签: java android kotlin

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

   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上测试了我的代码。

1 个答案:

答案 0 :(得分:0)

您可以使用Intent中的clearTask标志

有关意图标志的更多信息,请参阅Activity Intent的官方文档

而且,由于您使用的是Kotlin,为什么不尝试Anko

像这样使用它

startActivity(intentFor<NeededActivity>().clearTask().newTask())