【问题标题】:Activity doesn't start from broadcast receiver after home button, and start after back button活动不会在主页按钮后从广播接收器开始,而是在返回按钮后开始
【发布时间】:2019-09-11 21:32:24
【问题描述】:

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

   val intent = Intent("my.intent")
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
   context?.startActivity(intent)

活动开始。但是当我看到活动并按下主页按钮时,下次当接收器尝试启动活动时,活动将不会启动,如果我在活动显示时按下后退按钮,下次活动将从接收器开始而没有任何问题。

我尝试为开始意图设置差异标志。 设置 singleTask 和 singleInstance 此外,我尝试覆盖 onBackPressed() 以完成活动并从 onPause() 调用 finish()。但行为不会改变。 我从主要活动开始我的前台服务,在这种情况下,我有相同的行为。如果我启动我的前台服务(只需单击按钮)并按主页以最小化应用程序以这种方式广播活动也不会启动 我展示了 toast frow 接收器,所以我确定活动必须开始。

我的清单

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

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    您可以使用 Intent 中的 clearTask 标志

    有关意图标志的更多信息,您可以参考官方文档Activity Intent

    另外,既然你正在使用 Kotlin,为什么不试试 Anko

    这样使用

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

    【讨论】:

    • 不幸的是没有帮助。我从主要活动开始我的前台服务,在这种情况下,我有相同的行为。如果我启动前台服务(只需单击按钮)并按主页以最小化应用程序,这样广播活动就不会启动
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多