Android Widget 随机停止工作

2024-01-15

我已经解决这个问题三天了,我已经查看了这里的每个问题以寻求答案。我有一个带有按钮的小部件,我希望它做的就是每次单击它时启动一项服务。问题是按钮随机停止工作。我根本无法重现它,也不知道是什么原因造成的。我的服务调用 stopSelf();但我的广播接收器也遇到了这个问题,所以我相信问题出在小部件而不是服务中。这是代码

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[]     appWidgetIds) 
{

Log.i("Widget", "onUpdate");

final int N = appWidgetIds.length;

    for (int i=0; i<N; i++) 
    {

        int appWidgetId = appWidgetIds[i];

        Log.i("Widget", "onUpdateLoop");


        Intent intent = new Intent(context, ServiceWidgetAction.class);
        intent.setAction(Long.toString(System.currentTimeMillis()));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        PendingIntent pendingIntent = PendingIntent
                .getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        RemoteViews views = new RemoteViews(context.getPackageName(), 
               R.layout.widget);

        views.setOnClickPendingIntent(R.id.widgetButton, pendingIntent);

        views.setTextViewText(
                R.id.widgetTextView,
                "Some text");

        appWidgetManager.updateAppWidget(appWidgetId, views);

    }

}

我一遍又一遍地检查了这段代码,但我不知道为什么要这样做。它在 3 部独立的手机上执行此操作,但我无法重新创建它。我尝试强制停止应用程序,从任务管理器中清除它,添加新的小部件等,以使小部件停止工作,但它不会。然而,当我今天早上醒来时,该小部件不再工作。任何帮助将不胜感激。


我最终找出了问题所在。我正在从应用程序中的其他位置更新小部件,但我没有每个小部件的完整代码。换句话说,我的应用程序像这样更新了小部件中的文本视图

    RemoteViews views = new RemoteViews(context.getPackageName(), 
           R.layout.widget);

    views.setTextViewText(
            R.id.widgetTextView,
            "Some text");

    appWidgetManager.updateAppWidget(appWidgetId, views);

但它需要完整的代码来保持按钮注册,如下所示:

    Intent intent = new Intent(context, ServiceWidgetAction.class);
    intent.setAction(Long.toString(System.currentTimeMillis()));
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent pendingIntent = PendingIntent
            .getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    RemoteViews views = new RemoteViews(context.getPackageName(), 
           R.layout.widget);

    views.setOnClickPendingIntent(R.id.widgetButton, pendingIntent);

    views.setTextViewText(
            R.id.widgetTextView,
            "Some text");

    appWidgetManager.updateAppWidget(appWidgetId, views);

因此,底线是每当您从应用程序内更新小部件时,请确保它看起来与小部件本身中的代码完全相同。不要遗漏任何东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Widget 随机停止工作 的相关文章

  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • 如何在矩阵或二进制图像中绘制多边形以便使用图像处理功能?

    我正在开发一个 matlab 程序 其中使用多边形 凹或凸 我需要在多边形上使用图像处理函数 如 imdilate 或 imerode 等 为此 我应该将多边形转换为图像 我想知道是否有一种方法可以直接在二进制矩阵中绘制多边形 1 代表前景
  • 如何让 R Shiny downloadHandler 文件名正常工作?

    我正在设置一个 Shiny 应用程序 允许用户下载自定义数据集 继tutorial https shiny rstudio com articles download html 我设置了下载处理程序 https shiny rstudio
  • Pandas 通过切片计算复合年增长率

    给定以下数据框 df pd DataFrame A 1 2 3 7 B 7 6 5 4 C 5 6 7 1 D 1 9 9 8 df df set index A df B C D A 1 7 5 1 2 6 6 9 3 5 7 9 7 4
  • Azure Docker Web 应用程序上的“启动文件”

    docker web 应用程序选项上的 启动文件 选项是docker compose文件 或者 shell 命令 我找不到任何相关文档 基本上我希望我的网络应用程序运行docker compose yml当我将图像推送到它时 而不是执行 d
  • 如何使用 Fabric 创建 postgresql 用户

    我想为我的设置 Fabric 脚本创建一个数据库用户 但 createuser 具有交互式密码输入功能 并且接缝不喜欢 Fabric 用 Fabric 示例来扩展答案 In fabfile py def create database Cr
  • 在 TextMate 中折叠全部

    有没有办法折叠 TextMate 中给定 php 文件中的所有函数 例如我有两种方法 function index Sample code function beforeFilter Sample Code 我希望能够发出一个命令 其中所有
  • 用户没有访问数据库的权限

    我正在尝试使用 Windows 身份验证连接到数据库 我相信我当前的用户无权访问它 如何让用户登录 SQL Server 并使用数据库 您需要使用 SQL Server Management Studio 程序来授予用户访问权限 您需要使用
  • git-p4:致命:构建 git 时不支持 git-p4 (NO_PYTHON=1)

    我正在尝试在我的 Linux 计算机上使用 git p4 但由于某种原因 git p4 似乎有问题 当我运行 git p4 命令时 我得到 fatal git was built without support for git p4 NO
  • 长时间运行的 PHP 脚本在通过 exec() 调用时停止,但在通过 CLI 调用时完成

    我有一堆脚本需要很长时间才能完成 其中一些可能需要长达 20 分钟 有一个 Bash 脚本可以执行这些 PHP 脚本 当我以 root 身份通过 CLI 调用此 Bash 脚本时 所有 PHP 脚本都会顺利完成 但是 当我通过浏览器使用 P
  • 安装 Eclipse 的 ADT 插件

    我正在尝试为 Eclipse 安装 ADT 插件 但是 当我进入 安装新软件 并输入插件位置后https dl ssl google com android eclipse https dl ssl google com android e
  • Delphi - 窗体中的窗体

    出于美观原因 我想在另一个表单之上显示一个表单 就像它是一个组件一样 比如 TPanel 它应该随父级一起调整大小 当父级被标题栏拖动时四处移动 等等 main form component 1 main the embedded form
  • 悬停时反转关键帧动画

    这是一个演示 http codepen io Tiger0915 pen GgjVLN http codepen io Tiger0915 pen GgjVLN 我有一个keyframe动画开启hover of the circle分区当您
  • 如何从 Terraform 中的地图中删除与键值匹配的值

    我有一个如下所示的示例地图 并且正在尝试删除任何具有与 bong 匹配的 key2 值的帐户 所以起始地图看起来像这样 sample map account1 key1 foo key2 bar account2 key1 bing key
  • 在 MVC 4.0 中的部分视图中使用节

    当我需要在特定元素上初始化 jQuery ui 时 我想在部分视图中包含脚本 它确实属于部分而不是包含页面或布局 据说 MVC 4 中有一种方法可以做到这一点 但我似乎找不到任何有关它的信息 我也有类似的问题 希望这可以帮助 我们希望有一个
  • 如何使用node-mysql而不将所有行加载到内存中?

    我正在使用 NodeJS 我想对 1 000 000 行执行某些操作 而不将所有行加载到内存中 对于每个 之前 当我使用 ASP Classic 时 我这样做 do while not rec eof do something rec mo
  • 将模板渲染为字符串?

    是否可以将模板 渲染 为字符串 我想使用一个模板并填充一些值 然后我必须将这些值保存到本地磁盘 渲染方法总是将模板发送到客户端 我想要类似于运行模板的东西 但将模板的输出保存到可以存储在本地文件系统中的本地字符串变量 它比你想象的更简单 d
  • 使用 Google Cloud Storage 的文档管理系统

    我目前正在研究 Google App Engine 的不同方面 仍处于研究阶段 构建了一些小型应用程序并将其部署在云上 最近 当我为云存储 即 gsUtil 安装命令行时 我遇到了云存储的版本控制支持 并且能够通过 gsUtil 检索旧对象
  • 如何强制我的 C# Windows 窗体使用阿拉伯数字?

    我试图强制我的表单使用阿拉伯格式 例如将 1 2 3 4 等 数字显示为 在我的所有形式中 无论它是Textbox orlables或者无论它是什么 我搜索并发现了很多关于这个问题的问题 其中大多数都不起作用 而我认为其他的似乎不是很好的答
  • 通过 Outlook (RDCOMclient) 将 R Markdown 输出作为正文电子邮件发送

    刚刚学习 R Markdown 语言 想知道我是否可以通过 Outlook 从 R 发送正文电子邮件中的输出 使用 RDCOMClient 我的办公室不使用 gmail 谢谢 根据 Ben 的回答 到处出现的奇怪符号可能是由 R 和 Out
  • Android Widget 随机停止工作

    我已经解决这个问题三天了 我已经查看了这里的每个问题以寻求答案 我有一个带有按钮的小部件 我希望它做的就是每次单击它时启动一项服务 问题是按钮随机停止工作 我根本无法重现它 也不知道是什么原因造成的 我的服务调用 stopSelf 但我的广