Android:如何使用处理程序handleMessage并访问对MainActivity的引用

2023-12-29

我有一个服务,它接收来自互联网的命令并启动后台线程。该线程从服务传递一个处理程序(该服务是有界的并传递该处理程序)并向该处理程序发送一条消息以拍照。我被困在处理程序的实现上。

static Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            //TODO: Handle different types of messages
            mCamera.takePicture(null, null, MainActivity.this);
        }
};

问题:

  • Handler 需要是静态的吗?如果没有静态,我得到“这个处理程序类应该是静态的,否则可能会发生泄漏”
  • mCamera 需要静态吗?有人告诉我要将 mCamera 设为静态,但为什么有必要这样做呢?有没有办法设置 takePicture 而不使 mCamera 静态?
  • 将引用传递给 MainActivity 的正确方法是什么?现在我收到错误:“在范围内无法访问 MainActivity 类型的封闭实例”

您可以使类(活动/服务)实现Handler.Callback并通过以下方式为其创建一个新的处理程序new Handler(this).

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

Android:如何使用处理程序handleMessage并访问对MainActivity的引用 的相关文章

  • 数据库“/data/data/msv_database.db”的连接池无法授予连接。连接数:0 个活动连接、1 个空闲连接、0 个可用连接

    我收到以下错误 在整个应用程序中使用单个数据库对象从两个不同线程访问数据库时 数据库连接池 data data msv database db 无法授予与线程 802 的连接 连接数 0 个活动连接 1 个空闲连接 0 个可用连接 也许您想
  • 在 Android 上生成 FileDescriptor 而不先打开文件

    在Android中 是否可以直接从字节数组生成FileDescriptor 而不必先打开文件 在 Android 2 2 中 我动态生成 MIDI 文件 然后使用 MediaPlayer 进行播放 我在下面包含了成功执行此操作的 Main
  • 在 Android 模拟器上运行完整的 Android 手机 ROM

    正如标题所说 是否可以在 Android 模拟器中运行完整的 Android 设备 ROM 是的 你可以 但让它 100 工作可能很困难 大多数 ROM 都包含其运行硬件的特定驱动程序 我并不是 100 全力以赴 但可以尝试以下步骤 创建
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • Android 软键盘 - 禁用某些键

    我正在寻找一种使用内置软键盘并禁用某些键的方法 例如 如果用户不应该使用字母 f 因为在列表中该字母不存在 则该键应显示为灰色 想象一下 用户可以在文本框中键入文本以从列表中进行选择 该列表包含 ABC BCCD 床 如果用户输入 A 然后
  • 如何检查 Android 设备是否在线

    我的服务器不断检查我的 Android 应用程序是否在线 请问我可以在我的android应用程序上执行哪些操作 创建一个名为 isNetworkAvailable 的帮助器方法 该方法将根据网络是否可用返回 true 或 false 它看起
  • adb 今天无法连接到 VirtualBox 中的 Android-x86

    我在 VirtualBox 中成功安装了 Android x86 v3 2 eeepc 一段时间 这是帮助我在 Android 上调试 USB 主机应用程序的好方法 此类配置的安装是 安装VirtualBox 将 Android x86 v
  • 如何在启用抗锯齿的情况下旋转可绘制对象

    我需要将 ImageView 旋转几度 我通过子类化 ImageView 和重载来做到这一点onDraw Override protected void onDraw Canvas canvas canvas save canvas sca
  • 返回到上一个活动的最后状态

    我有两个活动 A 和 B 当应用程序启动时 活动 A 会被加载 我会从数据库将数据加载到其中 我可以毫无问题地转到活动 B 但是当我返回活动 A 时 会查看旧数据一段时间 然后重新加载活动 知道如何解决这个问题吗 在从数据库加载数据之前清除
  • 如何去掉android状态栏的电池图标?

    我通过去掉背景图像来删除 Android 中显示网络 电池和时间信息的状态栏 但图标仍然存在 我也想知道如何删除电池图标 不是用于应用程序 而是用于框架开发 提前致谢 你试过打电话吗 getWindow setFlags WindowMan
  • Android:外部存储上的 mkdirs()/mkdir() 返回 false

    我对此感到疯狂 Log d STATE Environment getExternalStorageState File f new File Environment getExternalStoragePublicDirectory En
  • 如何告诉 OkHttpClient 忽略缓存并强制从服务器刷新?

    在我的 Android 应用程序中 我将 Retrofit 与 OkHttpClient 结合使用 并启用缓存来访问某些 API 我们的一些 API 有时会返回空数据 我们在应用程序中提供了一个 刷新 按钮 供客户端从特定 API 重新加载
  • Android 导航组件 - 从“任何地方”/基本片段导航?

    我正在开发一个应用程序 它有一个奇怪的花招 可以在设备旋转时打开特定的片段 在实现 android 的导航组件之前 所需要的只是对当前活动的引用 并且可以在特定时刻向用户显示的任何内容之上执行手动片段事务 但是在转移到导航组件之后 我发现很
  • java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

    文件夹结构 app main java jni Android mk Application mk hello jni c res 在构建 gradle apply plugin com android application androi
  • 通过 Google 帐户从 Google Play 安装的应用程序列表

    以下是我的问题 是否可以通过使用任何 api 以编程方式通过 Google Play 获取用户已安装的应用程序列表 请注意 我并不是询问设备中当前安装的应用程序列表 而是询问在某个时刻已安装的应用程序列表 我需要解决上述问题 因为我正在考虑
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • 使用bindService启动IntentService时是否应该调用onHandleIntent?

    我的服务延伸IntentService当它开始时startService onHandleIntent被叫 但是 当服务启动时bindService 我确实需要绑定 onHandleIntent没有被调用 Should onHandleIn
  • 我想要有条件的登录导航,没有 MAIN 片段或按钮

    我正在使用 Android Jetpack 导航组件 实时数据和 Firebase 我希望工作流程就像用户打开应用程序时一样 然后根据登录 注销状态导航到登录 配置文件片段 而不需要任何主片段或按钮 请 我的应用程序中没有主要片段 用户启动
  • 永久删除Android文件

    我发现了一个名为这会从 Android 设备中永久删除文件和文件夹 以便删除的文件无法再恢复 这是我正在谈论的应用程序 但我想知道如何做到这一点 我知道它是用 android studio 制作的 i尝试了常规的删除方式file delet
  • 使用部分字符串匹配进行 Firebase 查询[重复]

    这个问题在这里已经有答案了 假设我有一个简单的 firebase 实时数据库结构 其中关键是username其值为userid 现在我想搜索userid by username 如果用户名匹配 这很容易 但如何获得部分匹配的答案 更清楚地说

随机推荐

  • 无法创建 yeoman web 应用程序

    当我尝试创建一个网络应用程序时 我得到了这个yeoman usr local lib node modules yo node modules insight node modules configstore configstore js
  • 为什么这段C代码可以编译?

    include
  • 在 Logback 中创建自定义布局

    我正在尝试在 logback 中创建自定义布局 如示例中所示手册第 6 章 http logback qos ch xref chapters layouts MySampleLayout html package com dces uti
  • 在 Rails 4 中创建到外部 URL 的 Rails 路由

    我有一堆路由 50 需要映射到外部 URL 我绝对可以按照建议做here https stackoverflow com questions 3622706 creating a rails route to an external url
  • Fortran 77 注释的语法突出显示在 vim 中不起作用

    我有一段用 Fortran 77 编写的代码 我用 vim 读取它 编写代码时 注释位于以c 这是 Fortran 77 中的标准 但是 vim 无法识别它们 因此使用着色语法 这使得代码非常难以阅读 我怎样才能克服这个问题 我看到有一个发
  • 在java中查找字符串中字符频率的有效方法:O(n)

    在最近的一次采访中 我被要求编写以下程序 找出给定字符串中频率最小的字符 因此 我尝试使用 charAt 迭代字符串 并将字符存储为 HashMap 中的键 并将出现次数作为其值 现在我必须再次迭代 Map 才能找到最低的元素 有没有一种更
  • 如何创建具有基本身份验证的 ASP.NET 网页

    我想创建 ASP NET 网页 该网页将提示我弹出基本身份验证窗口 我将在其中输入凭据 我尝试在 PreInit 和 PreLoad 事件处理程序中添加以下代码行 但它仍然没有显示基本身份验证弹出窗口 protected override
  • SQLNonTransientConnectionException 在 Eclipse 中连接 MySQL

    我正在尝试编写代码 使用 Eclipse MySQL Workbench 和 JDBC 8 0 11 将文本文件的数据导入数据库 它给了我一个 ClassNotFoundException 我已经查看了多个其他问题 并且通过将 java c
  • MassTransit Consumer 中的异常冒泡导致 Windows 服务崩溃

    我使用 AutoFac 设置了一个包含 2 个消费者的 Windows 服务 在一条快乐的道路上 这确实非常有效 我的印象是大众交通为我处理了例外情况 正如文档所述 http docs masstransit project com en
  • 使用报表查看器在运行时将未知数量的图像插入到报表中

    我正在使用reportviewer 我想在运行时向报告中添加未知数量的图像 用户应该选择一些图像 在另一个地方 这些图像应该一个接一个地显示在报告中 您知道如何使用报表查看器来做到这一点吗 谢谢 奥菲尔 有很多方法可以做到这一点 这是一种可
  • 头文件在代码块中工作吗?

    延迟函数为dos h头文件在代码块中不起作用 它表明延迟函数未声明 以下链接包含以下程序 link http www programmingsimplified com c dos h delay int main printf This
  • 寻找有界子图之间的最小割集

    如果游戏地图被划分为子图 如何最小化子图之间的边 我有一个问题 我试图通过基于网格的游戏 如 pacman 或 sokoban 进行 A 搜索 但我需要找到 外壳 外壳是什么意思 子图尽可能少切边 http en wikipedia org
  • 查找嵌入式 Linux 系统中的延迟问题(停顿)

    我有一个在 Atmel AT91SAM9260EK 板上运行的嵌入式 Linux 系统 其中有两个进程以实时优先级运行 管理器进程使用 POSIX 消息队列定期 ping 工作进程 以检查工作进程的运行状况 通常 往返 ping 需要大约
  • 可以使用 Java 程序的退出代码来检测磁盘空间不足的异常吗?

    我的 Java 程序是从 Windows 脚本调用的 是否可以使用 Java 退出代码来确定 Java 程序是否因磁盘空间不足而提前终止 同时它仍在从 JAR 文件加载类文件 我尝试了内存不足异常 它返回退出代码 1 但磁盘空间不足返回退出
  • 如何使 C++ 指针为空 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在声明所有 C 指针时 所有指针都应
  • Azure 流分析将行旋转为列

    我有一个类似的数据 deviceid d1 parameter p1 value 1 timestamp 2018 03 22T12 33 00 deviceid d1 parameter p2 value 2 timestamp 2018
  • 如何使用在其他地方创建的预聚类数据在 R 中创建树状图?

    我有用 Java 编写的集群代码 我可以从中创建嵌套树结构 例如下面显示了树的一小部分 其中两个 isRetired 对象在第一次迭代中聚集在一起 并且该组在第五次迭代中与 setIsRequired 聚集在一起 簇中对象之间的距离显示在括
  • 有没有办法确定 Linux 上的库使用的线程本地存储模型

    有没有办法在Linux上查询共享库的TLS模型 例如使用 ldd 或其他一些工具 我在使用 initial exec 模型加载太多库时遇到麻烦 并且想确定哪些第三方库使用此模型 这样我可以通过静态链接来释放一些插槽 这会导致错误 dlope
  • 标题中徽标和菜单项垂直居中的最佳实践[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我经常发现自己必须将徽标和主菜单垂直居中在全角标题中 有没有一种被广泛接受的方法来处理这个问题 header box s
  • Android:如何使用处理程序handleMessage并访问对MainActivity的引用

    我有一个服务 它接收来自互联网的命令并启动后台线程 该线程从服务传递一个处理程序 该服务是有界的并传递该处理程序 并向该处理程序发送一条消息以拍照 我被困在处理程序的实现上 static Handler handler new Handle