【问题标题】:Widget Pending Intent won't work after application is Force Stopped/Killed应用程序被强制停止/终止后,Widget Pending Intent 将不起作用
【发布时间】:2012-06-29 18:57:34
【问题描述】:

我有一个小部件,它是我的主应用程序的一部分。通常,当应用程序更新时,会创建一个 PendingIntent,在单击小部件时将用户带到主应用程序中的一个 Activity。但是,当主应用程序由于错误被操作系统强制停止或杀死时,小部件在单击时停止响应。我相信它也会停止接收广播,因为没有调用 onReceive 方法。

这是清单中的内容:

<receiver android:name=".widgets.AppWidget" android:label="@string/widget_name">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
        <action android:name="com.myApp.android.widgets.CLICK.start"></action>
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
                     android:resource="@xml/appWidget_provider"/>
</receiver>

小部件代码位于与主应用程序不同的包中。

【问题讨论】:

    标签: android android-intent android-widget


    【解决方案1】:

    但是,当主应用程序因错误而被操作系统强制停止或杀死时,小部件在单击时停止响应。我相信它也会停止接收广播,因为没有调用 onReceive 方法。

    在 Android 3.1+ 上,如果用户强制关闭您,您的应用小部件肯定会停止工作,直到用户通过其他方式(例如,主屏幕启动器)手动启动您的一项活动。

    但是,“由于错误而被操作系统杀死”不应该产生这种影响 AFAIK。如果您可以创建一个可重现的测试用例来证明这一点,请将其发布到某个地方以便我们进行检查。

    【讨论】:

    • 谢谢!我在旧手机上尝试过,它确实有效。我注意到有一次我的应用程序由于错误被操作系统关闭,然后小部件停止工作。从那以后我一直无法重新创建它,但我会再次留意它。
    • 我们遇到了同样的问题。它似乎发生在 Lollipop 上,但它适用于 Kit Kat。有什么解释吗?有什么我们可以设置的意图来帮助这个吗?
    • @RCB:“有什么解释吗?” - 除了我的回答中的内容外,别无其他。 “有什么我们可以设置的意图来帮助这个吗?” - 我对此表示怀疑。正如我三年前所写的那样,“如果您可以创建一个可重现的测试用例来证明这一点,请将其发布到某个地方以便我们进行检查。”
    • 要添加更多的 cmets,不同的任务管理器杀死应用程序的方式有所不同。一些测试表明,当使用应用商店中的应用杀死另一个应用时,小部件仍然按预期工作,而当使用更多“原生”时,制造商提供了任务管理器(就像某些设备通过系统设置 > 应用管理器可用)小部件被视为 user force-closed,如 CommonsWare 答案中所指定。通过系统应用程序管理器仍认为它正在运行并且可以关闭的应用程序关闭应用程序时,也可以看到这种差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多