问题标签 [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.
android - Handler.sendMessageDelayed(msg, delay) 无法正常工作
我已经定义了在加载过程中显示的启动画面。但根据互联网连接,加载可能只需要 600 毫秒,有时甚至需要 5000 毫秒。所以我定义闪屏至少显示 3000 毫秒,这样用户就不会被闪烁的屏幕激怒。
我通过以下方式定义启动画面的开始:
在 LoadingThread 中,我检查网络并从 Internet 加载数据:
加载完成后,我会向 MainActivity 中定义的处理程序发送一条消息:
LoadingThreads 上的一些代码行由 runOnUIThread() 调用。不幸的是,如果时间 < SPLASH_MIN_TIME 消息不会延迟,而是会立即发送。我认为 sendMessageDelayed() 不应该是这种情况。有人知道为什么吗?sysout 显示延迟时间计算正确。谢谢!
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()
android - 取消 handler.postdelayed 进程
我正在使用handler.postDelayed()
在我的应用程序的下一阶段发生之前创建一个等待期。在等待期间,我正在显示一个带有进度条和取消按钮的对话框。
我的问题是我找不到在时间过去之前取消 postDelayed任务的方法。
android - Handlers、MessageQueue、Looper,它们都运行在 UI 线程上吗?
我正在尝试围绕线程进行处理,并且我知道我可以使用 aHandler
将消息/可运行文件发布到MessageQueue
,而后者又被 拾取Looper
并发送回Handler
处理。
如果我Handler
在我的活动中发布到 a ,那么、Activity
和都在 UI 线程上运行吗?如果没有,有人可以解释一下这一切是如何结合在一起的吗?:)Handler
MessageQueue
Looper
android - 不同情况下使用AlarmManager vs Handler Android
有人可以通过示例向我解释使用 AlarmManager vs Handler 的不同情况。使用这两者交替使用有什么缺点吗?
谢谢。
android - 如何在 Android 代码中提前取消处理程序?
如果服务没有完成,我会创建 1 分钟的延迟计时器来关闭服务。看起来像这样:
在 onCreate() 里面
如果我在这 1 分钟之前完成工作 - 我想取消这个延迟的事情,但不知道如何取消。
android - 处理程序 vs AsyncTask vs 线程
我对 Android和Android 之间Handlers
的区别感到有些困惑。我在 StackOverflow 上阅读了很多博客和问题。AsyncTask
Threads
Handler
是为您提供与 UI 通信的后台线程。例如,更新进度条应该通过Handler
. 使用 Handlers 你有优势MessagingQueues
,所以如果你想安排消息或更新多个 UI 元素或有重复的任务。
AsyncTask
类似,实际上它们都使用Handler
,但不在 UI 线程中运行,因此它适用于获取数据,例如获取 Web 服务。稍后您可以与 UI 交互。
Thread
但是无法与 UI 交互,提供更多“基本”线程,并且您错过了AsyncTask
.
但是,我希望在服务中运行一个套接字连接。这应该在处理程序或线程中运行,甚至是AsyncTask
? 根本不需要 UI 交互。它对我使用的性能有影响吗?
同时,文档也得到了重大改进。
java - 完成后,这个可运行的线程最后会发生什么?
我有这个从服务器下载一些图像的线程。因此,一旦它下载了图像,我就会调用处理程序并进行 UI 更新。因此,由于线程的 stop() 已被弃用,因此我无法使用它。我在这里有两个问题。
- 最后这个线程会发生什么?(意味着在我调用处理程序方法之后它会发生什么)。
- 或者如何在不使用 stop() 的情况下停止该线程?
这是我的代码。
android - NullPointerException 在某些手机上,而不是在其他手机上(相同的 API 级别)
我有一个 Android 应用程序在某些手机(所有 2.3.x)上获得 NullPointerException,但在我的手机(也是 2.3.x)或任何模拟器上都没有。
特定异常似乎没有表明它在我的代码中发生,所以我假设我正在调用同一 API 的某些版本不正确?我不知道该怎么做。
这是来自 logcat 的错误日志:
这是来自调试器的堆栈跟踪:
该错误在活动开始时立即发生,尽管没有任何调试信息表明我的代码中的任何地方,但我猜测其中的某些东西onCreate()
会导致它,所以这里是有onCreate()
问题的活动:
我知道它实际上并没有做它在最后创建的新线程中所做的任何工作,因为进度对话永远不会出现,如果它这样做了它会记录它所做的工作(确实当我在手机或模拟器上运行它时会这样做)。
我对 android 有点陌生,我不知道是什么原因造成的,也不知道为什么它会发生在某些设备上而不是其他设备上,即使它们应该具有相同版本的 android API。如果有人以前见过这样的事情或知道是什么原因造成的,那么一些关于在哪里看的指针将不胜感激。