问题标签 [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.
handler - Android Looper 处理程序handleMessage 在向其发送消息后未被调用(HTC EVO 3D)
我遇到了一个非常奇怪的问题:在 HTC EVO 3D 上,有时,在将消息发送到 looper 的处理程序后,looper 不会调用 handleMessage。它发生两次,很难复制。我第一次发现它是在八小时的压力测试之后。没有错误和异常。但是,我没有打印出消息是否成功发送到 looper,但我确信 looper 线程仍然活着并且通过调试器运行。
我使用完全相同的机制半年多,从未出现任何问题。我想知道有人遇到同样的问题吗?是设备问题吗?
谢谢,
西蒙
android - 如何取消Service/IntentService/AsyncTask/Looper
我要疯了。我想要一件简单的事情——我有一个很长的任务(从网络上获取几个数据对象)并且我想要取消它的能力。我尝试了很多东西(很多)但没有任何效果
流程是这样的:
用户点击一个按钮
我开始工作(我尝试使用
AsyncTask
、Service
和)IntentService
Looper
该任务负责处理所有事情,包括为进度更新添加持续通知
通知中的意图调用了一个新活动,她的唯一目的是取消正在进行的任务
在 cancelActivity 我尝试调用
stopService()
Service/IntentService 或Looper.quit()
为 Looper 做(我不记得我为 AsyncTask 尝试了什么,不确定是否有这样的 api 用于取消它)
在我看来,最好的选择是使用IntentService
(我可以有几个任务排队,IntetService 会按照我想要的顺序执行)但我愿意接受任何类型的实施建议——我不在乎什么代码将是,只是我可以选择取消任务
预先感谢您的帮助
德罗
(我要睡觉了——在同一个问题上花 8 个小时实在太多了)
pthreads - 如何在超时到期之前退出 ALooper_pollAll
在 myandroid_main
中,我使用负超时值进行调用,ALooper_pollAll
以便它无限期地等待,直到事件出现。但是,在某些情况下,我需要能够手动退出此阻塞状态(无需等待事件发生)。
为了尝试实现这一点,我尝试在ALooper_pollAll
等待事件时从不同的线程调用以下命令:
ALooper_wake( ALooper_forThread() )
但是,这会导致分段错误。
有没有办法可以ALooper_pollAll
在超时到期之前手动取消阻止?
android - 服务、观察者和 Loopers
我正在尝试在远程服务中创建一个包含 Content Observers 的应用程序,但不断收到错误消息:
“无法在未调用 Looper 准备的线程内创建处理程序”
我在 Android 开发者网站上做了很多阅读以及许多谷歌搜索,但我仍然没有完全理解这个问题。到目前为止,我从中得到的是 Content Observer 需要一个线程来运行(对于 Handler)。添加后:
Looper.myLooper().prepare();
mObserver = new Observer(new Handler());
在创建新的 Content Observer 之前立即调用 Looper 可使应用程序正常工作。但是,我想更好地理解为什么会这样——到目前为止,我在网上找不到任何东西可以帮助我理解为什么。此外,添加 Looper 代码行是正确且有效的做法吗?我需要对此进行任何清理以防止以后发生内存泄漏吗?
解释越简单越好。仍然在我进行 Android 开发的第一个月并取得了不错的进展 - StackOverflow 提供了巨大的帮助!谢谢。
更新
在玩耍并阅读更多内容之后,我认为对如何完成这项工作以及如何清理它有了更好的了解,但仍然缺少一小部分。
根据我收集到的信息,我可以将 Looper.prepare() 称为静态方法。然后我可以使用新的 Handler() 创建我的 Content Observer。当我想停止这个 Content Observer 时,我可以使用 mLooper = Looper.myLooper.getThread() 获取对象的线程,然后我可以运行 mLooper.quit()。但是我必须,什么时候,我为什么要调用 mLooper.loop()?
更新 2
好的,这里是我要解决的问题。该应用程序在内部,解释起来有点复杂,但这是我最好的选择:
我们有一个远程服务正在运行,它接收和发送网络数据。我们的消息类型是在数据中定义的,因此我们可以将它们定向到手机上的正确数据库。有一个 Jar 接口文件供其他 APK 导入以连接到正在运行的服务。当收到他们感兴趣的新消息时,这些 APK 可以注册以接收广播。为此,内容观察者注册了 APK 使用的内容 uri,因此当新数据添加到数据库时,内容观察者将发送广播以提醒正确的 APK。然后 APK 可以随心所欲地处理这个问题。
那么是否可以使用 null 作为新内容观察者的参数,还是使用 new Handler() 为该观察者创建线程更好。
我尝试创建一个线程,但到目前为止它不起作用,我认为这是因为我还没有启动 Looper.loop(这会冻结我的服务)。任何建议将不胜感激!提前致谢。
android - Android 代码段不运行没有断点(线程)
如果我没有断点,我有一些代码将无法运行。我的猜测是代码执行得太快了,我允许断点继续执行之间的时间让线程锁定在我的代码上。它也没有被我的异常处理“捕获”,所以它的代码不错,但是当断点在那里时,它会进一步尝试并做我想做的一切
不知道如何在不处于调试模式的情况下使其工作!我正在考虑 wait() 或 sleep() 函数,但这似乎是一个愚蠢的解决方法,如果有更好的方法,请告诉我
洞察力赞赏!
android - TimerTask、地理位置和 Looper
我需要在我的应用程序中执行以下逻辑:每分钟,我都希望能够听 GPS 位置 20 秒以获取 GEO 位置修复。
这显然需要运行与 UI 线程不同的线程。
然而,我在结合使用 looper 和 timertask 时遇到了一些问题......
实现这一目标的最佳方法是什么?
android - 每个线程只能创建一个 Looper 错误,异步任务
本文底部的代码由以下代码行触发。
下面代码的 doInBackground 部分调用了一个包含 for 循环的方法,因此需要 Looper.prepare()。
此代码在前几次调用时运行良好,但随后引发以下错误:
10-15 22:50:24.752: ERROR/AndroidRuntime(9258): Caused by: java.lang.RuntimeException: 每个线程只能创建一个 Looper
我试过把 Looper.getMainLooper().quit(); 以及 AsyncTask 的各个部分中的其他一些类似的东西,但这只会使它立即崩溃。
有什么帮助吗?
代码:
android - MonoDroid Looper.MyQueue() 挂在一些活动/空闲处理程序上?
当应用程序处于空闲模式时,我正在使用 MonoDroidLooper.MyQueue().AddIdleHandler()
执行一些命令。这适用于一个活动,但如果我开始第二个活动,它会挂起,直到我触摸屏幕或重新启动第一个活动。没有循环或任何可能阻塞第二个活动中的队列的东西。如何防止弯针挂起?
消息队列会被什么东西阻塞吗?在空闲处理程序不工作的活动中,注册了 OnTouch 事件。
或者有人知道如何为 monodroid 实现空闲处理程序的另一种方法吗?
android - Android AsyncTask 对话框警报
如果服务器上有任何新内容,我有一个启动屏幕检查 URL。如果显示我希望向应用程序用户显示 AlertDialog,以便根据用户的操作,即如果是,则从服务器下载新内容并将其获取到数据库,否则如果不从服务器加载应用程序的内容。
但是我无法在 AsyncTask 中使用警报对话框 我的代码段如下:
已编辑
所以在
android - 无法创建线程中的 WebView
我有一些线程,我在其中创建了一些视图并准备显示它们。其中我也有一个WebView。此代码在线程中执行:
并引发以下异常:
这有点奇怪,因为当我创建一个简单的按钮时一切正常。那么,任何人都可以向我解释为什么在创建 WebView 时我得到这个异常,如果Looper.prepare()
可以在这里提供帮助?提前致谢!