【问题标题】:Showing existing activity via notification通过通知显示现有活动
【发布时间】:2016-07-05 19:10:17
【问题描述】:

我有一个问题,我需要加载已经通过单击活动打开的现有活动,我的问题是,当单击通知时,会尝试创建一个新活动,从而调用 onCreate 方法等等第四。我应该如何只重新打开已经打开(然后在后台运行)的活动?

另外,我应该如何解决 Android 可能会杀死我打算通过通知打开的后台活动的问题?

另一个大问题是,如果通知由用户手动转到应用程序并执行所需的活动,从而使通知无用,然后当用户单击通知时,我应该如何识别用户已经手动执行通知应该执行的任务?

问候, 米琳达

【问题讨论】:

    标签: java android android-activity background notifications


    【解决方案1】:

    听起来这里有几个单独的问题。

    我有一个问题,我需要加载已经通过单击活动打开的现有活动,我的问题是,当单击通知时,会尝试创建一个新活动,从而调用 onCreate 方法等等第四。我应该如何只重新打开已经打开(然后在后台运行)的活动?

    所以,如果我对您的理解正确,用户正在查看您的活动,然后他们离开,然后通过通知返回。在这种情况下,onCreate 通常不会被再次调用,除非应用程序自行终止、设置了 android:noHistory 或被系统终止以回收内存。如果您尝试编写一个不会被杀死的活动,那么您做错了什么,您可能应该使用服务:http://developer.android.com/reference/android/app/Service.html

    另外,我应该如何解决 Android 可能会杀死我打算通过通知打开的后台活动的问题?

    这里的问题在于“后台活动”这个词。您必须假设如果用户去做其他事情,任何活动都可能被杀死。如果您需要代码继续运行而不管用户在做什么,您应该使用服务(见上文)。

    另一个大问题是,如果通知由用户手动转到应用程序并执行所需的活动,从而使通知无用,然后当用户单击通知时,我应该如何识别用户已经手动执行通知应该执行的任务?

    当您的活动运行时,它可以简单地取消任何通知。获取NotificationManagergetSystemService() 的实例并调用.cancel(NOTIFICATION_ID)

    【讨论】:

    • 我对 android 很陌生,但是当使用“android:noHistory”时,我的应用程序可以使用返回按钮返回到上一个活动,对吗?如果是这样,有没有其他方法可以打开活动而不重新创建它(再次调用 onCreate)?
    • 没错。在这种情况下,听起来您想避免使用android:noHistory。我认为您以错误的方式看待这个问题。如果您试图设计您的应用程序以使您的活动永远不会被杀死,那么就有问题了。在 Android 上,您永远不知道您的活动何时会被终止,您应该在设计时考虑到这一点。要么保存数据并在重新创建活动时恢复它,要么启动将在后台运行的服务。
    • @MilindaD:他说的完全正确。你永远不知道安卓什么时候会毁掉你的Activity
    【解决方案2】:

    不确定自 2011 年以来这是否发生了变化,很有可能,但在 2016 年,更改清单对我来说非常容易。正是添加了“singleTask”才有所作为。

        <activity
            android:name=".MainActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多