问题标签 [android-handler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5739 浏览

android - Handler.sendMessageDelayed(msg, delay) 无法正常工作

我已经定义了在加载过程中显示的启动画面。但根据互联网连接,加载可能只需要 600 毫秒,有时甚至需要 5000 毫秒。所以我定义闪屏至少显示 3000 毫秒,这样用户就不会被闪烁的屏幕激怒。

我通过以下方式定义启动画面的开始:

在 LoadingThread 中,我检查网络并从 Internet 加载数据:

加载完成后,我会向 MainActivity 中定义的处理程序发送一条消息:

LoadingThreads 上的一些代码行由 runOnUIThread() 调用。不幸的是,如果时间 < SPLASH_MIN_TIME 消息不会延迟,而是会立即发送。我认为 sendMessageDelayed() 不应该是这种情况。有人知道为什么吗?sysout 显示延迟时间计算正确。谢谢!

0 投票
1 回答
1548 浏览

android - 安卓定时器处理程序

我正在使用这段代码:

当我运行它时,我在 logcat 中得到了这个异常:

09-06 21:39:39.701: ERROR/AndroidRuntime(1433): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

0 投票
7 回答
109850 浏览

android - 取消 handler.postdelayed 进程

我正在使用handler.postDelayed()在我的应用程序的下一阶段发生之前创建一个等待期。在等待期间,我正在显示一个带有进度条和取消按钮的对话框。

我的问题是我找不到在时间过去之前取消 postDelayed任务的方法。

0 投票
4 回答
23480 浏览

android - Handlers、MessageQueue、Looper,它们都运行在 UI 线程上吗?

我正在尝试围绕线程进行处理,并且我知道我可以使用 aHandler将消息/可运行文件发布到MessageQueue,而后者又被 拾取Looper并发送回Handler处理。

如果我Handler在我的活动中发布到 a ,那么、Activity和都在 UI 线程上运行吗?如果没有,有人可以解释一下这一切是如何结合在一起的吗?:)HandlerMessageQueueLooper

0 投票
1 回答
3139 浏览

android - 不同情况下使用AlarmManager vs Handler Android

有人可以通过示例向我解释使用 AlarmManager vs Handler 的不同情况。使用这两者交替使用有什么缺点吗?

谢谢。

0 投票
6 回答
126026 浏览

java - 如何从处理程序中删除所有回调?

我的子 Activity 有一个Handler,它由主Activity调用。这个 Handler 被postDelay一些 Runnables 的子类使用,我无法管理它们。现在,在这种情况onStop下,我需要在完成 Activity 之前删除它们(我以某种方式调用finish()了 ,但它仍然一次又一次地调用)。无论如何要从处理程序中删除所有回调?

0 投票
4 回答
20274 浏览

android - 如何在 Android 代码中提前取消处理程序?

如果服务没有完成,我会创建 1 分钟的延迟计时器来关闭服务。看起来像这样:

在 onCreate() 里面

如果我在这 1 分钟之前完成工作 - 我想取消这个延迟的事情,但不知道如何取消。

0 投票
13 回答
145271 浏览

android - 处理程序 vs AsyncTask vs 线程

我对 Android和Android 之间Handlers的区别感到有些困惑。我在 StackOverflow 上阅读了很多博客和问题。AsyncTaskThreads

Handler是为您提供与 UI 通信的后台线程。例如,更新进度条应该通过Handler. 使用 Handlers 你有优势MessagingQueues,所以如果你想安排消息或更新多个 UI 元素或有重复的任务。

AsyncTask类似,实际上它们都使用Handler,但不在 UI 线程中运行,因此它适用于获取数据,例如获取 Web 服务。稍后您可以与 UI 交互。

Thread但是无法与 UI 交互,提供更多“基本”线程,并且您错过了AsyncTask.

但是,我希望在服务中运行一个套接字连接。这应该在处理程序或线程中运行,甚至是AsyncTask? 根本不需要 UI 交互。它对我使用的性能有影响吗?

同时,文档也得到了重大改进。

0 投票
2 回答
4639 浏览

java - 完成后,这个可运行的线程最后会发生什么?

我有这个从服务器下载一些图像的线程。因此,一旦它下载了图像,我就会调用处理程序并进行 UI 更新。因此,由于线程的 stop() 已被弃用,因此我无法使用它。我在这里有两个问题。

  1. 最后这个线程会发生什么?(意味着在我调用处理程序方法之后它会发生什么)。
  2. 或者如何在不使用 stop() 的情况下停止该线程?

这是我的代码。

0 投票
1 回答
2416 浏览

android - NullPointerException 在某些手机上,而不是在其他手机上(相同的 API 级别)

我有一个 Android 应用程序在某些手机(所有 2.3.x)上获得 NullPointerException,但在我的手机(也是 2.3.x)或任何模拟器上都没有。

特定异常似乎没有表明它在我的代码中发生,所以我假设我正在调用同一 API 的某些版本不正确?我不知道该怎么做。

这是来自 logcat 的错误日志:

这是来自调试器的堆栈跟踪:

该错误在活动开始时立即发生,尽管没有任何调试信息表明我的代码中的任何地方,但我猜测其中的某些东西onCreate()会导致它,所以这里是有onCreate()问题的活动:

我知道它实际上并没有做它在最后创建的新线程中所做的任何工作,因为进度对话永远不会出现,如果它这样做了它会记录它所做的工作(确实当我在手机或模拟器上运行它时会这样做)。

我对 android 有点陌生,我不知道是什么原因造成的,也不知道为什么它会发生在某些设备上而不是其他设备上,即使它们应该具有相同版本的 android API。如果有人以前见过这样的事情或知道是什么原因造成的,那么一些关于在哪里看的指针将不胜感激。