问题标签 [android-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.
java - Loopers - 处理程序 - 线程
因此,我正在使用一些执行看似异步任务的代码,并使用典型的回调/侦听器模型来接收回调。
我的问题是,如果我阻止调用操作的线程,有时回调永远不会触发。
考虑以下代码片段:
的内部doAsync()
使用处理程序和main looper
.
考虑到我调用此代码,Thread A
有人可以概述一下Thread A
在此调用后阻塞右侧的效果。
另外,运行 Handler 的效果是什么,main looper
它local looper
会确定执行上述回调的线程吗?我问这个是因为如果我阻塞Thread A
,那么回调永远不会执行。
android - 使用 Looper.loop() 时如何停止线程?
我已经阅读了几乎所有与该主题相关的问题,但在“结束”线程之前它们都是完美的。
这是我尝试过的代码。我收到“不允许退出主线程”的消息。我只想在满足条件的某个时候退出线程。
android - getLooper() 启动 HandlerThread 后返回 null
我有一个类 extends HandlerThread
,它看起来像这样:
如上所示,该prepare()
函数启动线程并等待run()
完成,然后尝试获取 looper。
在另一个类中,我创建了一个MyHandlerThread
& 启动它的实例:
控制台中显示的日志:
为什么在函数中,尽管线程已经启动(已执行)prepare()
,但调用getLooper()
返回null ?run()
java - 单击按钮后如何使用异步任务调用方法
如何在 AsyncTask 中调用方法?在我的 asynctask 中,这是我的 java 文件“xyz”中的一个内部类,当用户单击一个按钮时,它应该调用“xyz”中的一个方法,该方法也恰好是一个 alertDialog,我知道它会调用它,但是当它到达该方法时,应用程序崩溃并给出运行时异常,提示“无法在未调用 Looper.prepare() 的线程内创建处理程序”。我在这里查找了示例,但它引发了相同的运行时异常。我怎样才能让它工作?从 asynctask 中调用外部方法不是可能的吗?这是调用该方法的片段:
这就是所谓的方法:
android - 如何处理强制停止
我想知道如何在我的 android 应用程序中处理强制停止。该应用程序在 Activity 中包含一个 asynctask 类,如下所示:
应用程序运行无任何异常,但是,在用户强制停止后(使用三星 Galaxy S5 主页按钮左侧的菜单按钮),当应用程序重新打开时,它会显示“进度对话框”消息请稍候”位于 asynctask 的 onPreExecute 方法中并无限挂起。
当我调试时,我注意到应用程序挂在 Looper 类循环方法中:
我们如何确保应用程序摆脱这个无限循环?
谢谢你。
此致。
android - requestSingleUpdate 监听器不起作用
使用 requestSingleUpdate 不会触发 onLocationChanged 事件。
似乎它取决于附加的活套前:
模拟器和设备的结果不一样!
问题
- 如果 requestSingleUpdate 被多次调用(使用不同的提供者),只有最后一个查询会被执行?
- requestSingleUpdate 必须在 ui 线程上调用?如果没有,有一个技巧可以在外面调用它吗?
完整类:
谢谢大家。
android - NotifyBuilder 上的 java.lang.RuntimeException
我有这段代码,我想要两个不同的动作,我想显示一个经典通知来打开 MainActivity,另一个通知来做 LogoutTask,但是我有这个 java.lang.RuntimeException: Can't create handler inside thread没有调用 Looper.prepare()
我向您展示了我的 NotificationBuilder、AsyncTask 和错误。
通知方式
异步任务
错误
12-10 11:09:53.486 19138-19390/it.penta.kleim E/AndroidRuntime: 致命异常: AsyncTask #3 进程: it.penta.kleim, PID: 19138 java.lang.RuntimeException: Can't create handler inside在 android.os.Handler.(Handler.java:114) 在 android.app.Dialog.(Dialog.java: 119) 在 android.app.AlertDialog.(AlertDialog.java:200) 在 android.app.AlertDialog.(AlertDialog.java:196) 在 android.app.ProgressDialog.(ProgressDialog.java:82) 在 it.penta.kleim.sixteen.retro_asynctasks.DoLogoutTask.(DoLogoutTask.java:44)在 it.penta.kleim.sixteen.retro_gcm.MyGcmListenerService.sendNotification(MyGcmListenerService.java:107) 在 it.penta.kleim.sixteen.retro_gcm.MyGcmListenerService.onMessageReceived(MyGcmListenerService.java:75) 在 com.google.android.gms .gcm。GcmListenerService.zzq(Unknown Source) at com.google.android.gms.gcm.GcmListenerService.zzp(Unknown Source) at com.google.android.gms.gcm.GcmListenerService.zzo(Unknown Source) at com.google.android。 gms.gcm.GcmListenerService.zza(Unknown Source) at com.google.android.gms.gcm.GcmListenerService$1.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java。 util.concurrent。ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 在 java.lang.Thread.run(Thread.java:818)
android - 每个线程只能创建一个 Looper
使用以下代码:
一段时间后(不是确切的情况)我有以下错误:
java.lang.RuntimeException:每个线程只能在 android.os.Looper.prepare 创建一个 Looper
有谁知道我哪里出错了?
android - java中的loopers与没有looper的线程,以及停止looper的正确方法?
我的问题是关于 java loopers 以及如何以正确的方式阻止它们。
可以说我有一个线程定义是这样的:
我有另一个几乎相同的线程,但带有一个活套:
现在如果我这样做:
new NoLooperThread().start();
我想知道 2 秒后这个线程可能会死,但如果我这样做:new LooperThread().start(); 线程继续永远阻塞?我的假设正确吗?
我将如何停止这个线程?我知道我需要打电话Looper.myLooper().quit();
来停止阻塞,但最好的方法是什么?我应该通过处理程序发送消息来阻止它吗?
那么 Looper 的目的有两个:它创建一个消息队列但也保持一个线程处于活动状态,这个假设是否也正确?
我的问题是在这里阅读 SO 问题后提出的
android - Android - myLooper() 与 getMainLooper()
只是澄清一下,但在主线程上的 Android 活动中,如果我调用Looper.myLooper()
vsLooper.getMainLooper()
返回相同的引用,对吗?他们是一样的东西?我知道我通常不必调用这些,因为 Android 会处理这个问题,但我想知道从主线程调用它们时它们有何不同?
如果我从主线程调用
它们都给出了相同的运行时异常,所以我假设它们是相同的参考:
引起:java.lang.RuntimeException:主线程不允许退出。
谁能确认?