问题标签 [looper]
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 - 如何在 AsyncTask 中举杯,提示我使用 Looper
我有 AsyncTask 在后台完成的任务。在某些时候,我需要发出一个 Toast 来表示某事已完成。
我试过了,但我失败了,因为
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
我怎样才能做到这一点?
iphone - 什么是黑莓相当于 Androids Looper?
Android 有 Looper,iPhone 有 Run Loops。似乎黑莓将有类似的支持来排队和运行线程。
有谁知道有吗?
java - 无法在 AsyncTask 中为 ProgressDialog 调用 Looper.prepare() 的线程内创建处理程序
我不明白为什么我会收到这个错误。我正在使用 AsyncTask 在后台运行一些进程。
我有:
当我进入doInBackground()
取决于条件时,我:
每当我尝试时downloadSpinnerProgressDialog.show()
,我都会收到错误。
有什么想法吗?
android - 多次调用 Looper 会导致“向死线程上的处理程序发送消息”
我正在使用带有我自己的 ThreadFactory 的 Executor [固定线程池],它添加了一个 Looper:
我正在运行一个发出网络请求的线程,但如果网络出现故障,我希望向用户显示一条对话框消息。这个过程相当复杂,因为它需要在 UI 线程中发出并显示请求。我可以通过简单地向网络线程添加一个循环并等待从 UI 线程发送消息来等待用户对对话框的响应。这允许我将网络请求封装在一个 while(tryAgain) 线程中。除了第二次调用 Looper.loop() 方法(显示第二个网络错误对话框之后)并且对话框(在 UI 线程中)将消息发送到网络线程的处理程序时,一切都运行良好:
在 AlertDialog 实例中是一个 OnClickListener:
我已经检查过该线程仍然处于活动状态,handler.getLooper().getThread().isAlive()
它总是返回 true,但它仍然给我“向死线程上的处理程序发送消息”。消息/处理程序如何决定线程已死?它不应该依赖 .isAlive() 方法吗?最后,我试图避免将线程管理构建复制到 Android 操作系统中:-)
android - 如何在 Android 上更好地对 Looper 和 Handler 代码进行单元测试?
我使用 android.os.Handler 类在后台执行任务。在对这些进行单元测试时,我调用Looper.loop()
以使测试线程等待后台任务线程执行其操作。后来,我调用Looper.myLooper().quit()
(也在测试线程中),让测试线程退出loop
并恢复测试逻辑。
在我想编写不止一种测试方法之前,一切都很好。
问题是 Looper 似乎并没有被设计为允许在同一个线程上退出和重新启动,所以我被迫在一个测试方法中完成所有测试。
我查看了 Looper 的源代码,但找不到解决方法。
还有其他方法可以测试我的 Hander/Looper 代码吗?或者也许是一些更适合测试的方式来编写我的后台任务类?
android - Android:每个线程只能创建一个 Looper
我在使用 Android Looper 时遇到问题。我有一个扩展了 AsynTask 的类。在 doInBackground() 方法中,我有 Looper.prepare() 和下面的一些代码。
它第一次运行良好,但之后它给出了一个异常“每个线程只能创建一个 Looper”。
似乎有一些使用 Looper.quit() 的解决方案,但我无法实现它。
任何帮助将不胜感激。
android - CountDownTimer:“无法在未调用 Looper.prepare() 的线程内创建处理程序”
我知道之前有人问过“无法在未调用 Looper.prepare() 的线程内创建处理程序”的一般问题,但我很难理解它在这种情况下如何应用。
我正在尝试在非 UI 线程中构造一个新的 CountDownTimer,我猜这是导致此错误的原因,但我真的不明白为什么需要在主线程中使用计时器。从我所看到的来看,它看起来有一个回调处理程序,需要在一个具有循环器的线程中运行,而非 UI 线程默认情况下没有该循环器。看来我的选择是:1)让这个非 UI 线程有一个 Looper 或 2)在我的 UI 线程上做一些奇怪的方法来构造这个计时器,这对我来说都是愚蠢的。有人可以帮我理解其中的含义吗?
另外,有没有人知道任何有用的链接可以阐明 Looper 和 MessageQueue?我没有很好地掌握它们,我确信我已经证明了这一点。谢谢!
java - Android:looper/handler vs. Java Observer?
这些不是竞争对手吗?我认为他们不是,但看不到。
在需要了解服务何时有新 xyz 的 Activity 的上下文中怎么样?
谢谢!
android - AsyncTask 和 Looper.prepare() 错误
我有以下代码
这似乎在一些测试设备上运行良好,但我看到开发控制台上出现了很多错误。我似乎无法弄清楚为什么以及在哪里放置这个 Looper.prepare()。需要吗?
根据要求 MyLocation.java
android - Android:使用处理程序和 postDelayed() 的问题
我正在尝试使用 Handler 在一段时间内执行一些代码。
这在我的两个课程中效果很好,但我遇到了这个问题:
我的一个类扩展了 Activity,并启动了一个线程(实现了 Runnable)。
在我的 run() 方法中,我有,就像在我的其他类中一样:
该程序似乎抱怨:
我不明白为什么它会发布,有人可以帮助我吗?
编辑:添加我的部分代码:
如果计时器达到 30 秒:
非常感谢,
杰里