问题标签 [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.

0 投票
0 回答
606 浏览

android - 可以为 Looper 正在处理的 Handlers 或 Messages 分配不同的优先级吗?

我知道在Android中执行类似后台任务的推荐方法是启动某种工作线程,但我想知道当后台任务小而多时是否有更简单的替代方案。所以这是我的问题:

在为 UI 线程 Looper 创建新的 Handler 时,是否可以以某种方式赋予它比运行 UI 的默认 Handler 更低的优先级?或者,在排队等待由 Handler/Looper 处理的消息时,是否可以为单个消息赋予低于默认消息的优先级,以便它们在 UI 消息之后排队,而新的 UI 消息将在它们前面排队?

我只是在想,如果这可能的话,它对我的​​应用程序来说已经足够好了,而且我可以避免使用工作线程以及连接 UI 和工作线程所需的额外编码。

0 投票
0 回答
376 浏览

java - 除了无限循环之外,如何运行循环器

我有一个运行无限循环的单独线程,它还通过处理程序(我的线程 > 处理程序 > ui 线程)更新主 ui 线程。

第二个线程上的无限循环:

但是,我现在想通过主 UI 线程修改线程中的一些对象。

如果我创建一个额外的处理程序以相反的方向工作(ui 线程 > 处理程序 > 我的线程),我需要同时运行一个循环器和我的无限循环 - 我如何实现这一点?我在哪里调用相关looper.loop()

0 投票
0 回答
40 浏览

android - 是否使用 Looper?

上的 Android 文档Looper没有明确说明我们是否应该使用Looper。我见过很多地方说不要使用Looperwith Handler,而是使用AsyncTask或一些类似的非主线程方法。

那么我们到底要不要使用Looper呢?

如果是,我什么时候必须使用它(不是必须或应该)?仅在将 UI 更新消息从线程传递到主线程时,还是还有其他情况?

0 投票
1 回答
1695 浏览

java - java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序

我正在使用以下内容MainActivity,但仍然收到以下错误消息:

为什么我会收到此错误?相关代码在这里:

0 投票
1 回答
686 浏览

android - android Looper 和 ui 线程

我正在调查 Dropbox 发布的跨平台库。以下代码来自它。我有问题(1)它使处理程序与主循环器连接。我听说这种方式我们可以创建 ui 线程处理程序。但它是否与原始 ui 线程(活动 ui 线程)有任何关系,或者它真的创建了另一个单独的 ui 线程?

如果有 2 个 ui 线程,那么一个 ui 线程是否有可能访问另一个 ui 组件并修改其 ui?

它在活动中调用

0 投票
2 回答
646 浏览

java - Realm:在 Runnable 中使用 RealmChangeListener

我正在databaseAndroid Application. 但是当我尝试RealmChangeListener从 a添加/删除时,Runnable我得到了exception.

java.lang.IllegalStateException:您无法从非 Looper 线程中删除/注册侦听器

如果我不使用 Runnable,它工作正常。以下是我的代码:

工作代码:

编辑:更新工作的代码:

所以任何机构都可以帮助我使 RealmChangeListener 在 Runnable 上正确工作。谢谢你。

0 投票
2 回答
4914 浏览

android - 为什么主线程的 Looper.loop() 不会阻塞 UI 线程?

今天我阅读了一些关于 Handler 和 Looper 如何协同工作的博客和源代码。

根据我所学到的,我们可以通过使用ThreadLocal魔法在每个线程上只有一个 Looper。通常Handler是在主线程中启动的,否则你必须手动启动或者说,prepareLooper在一个单独的线程上然后循环起来。

真正让我感到困惑的是loop()主线程。正如我在 Looper 的源代码中读到的那样。处理消息队列然后调度消息以供回调处理是一个无限循环。

根据这个https://stackoverflow.com/a/5193981/2290191, Handler 和它的 Looper 在同一个线程中运行。

如果主线程出现死循环,岂不是阻塞了整个UI系统?

我知道我一定是太傻了才会错过一些东西。但如果有人透露这背后的秘密,那就太好了。

0 投票
0 回答
118 浏览

android - How do Threads, Handler and Loopers Work together?

Forgive me if i make a mistake but I'm really new to this particular topic and i need a clear understanding with the help of an example from Android's context

Threads are processes working separately from the main thread. Loopers are used for storing tasks like a pipeline. Handlers pass tasks to Loopers.

I know i could be wrong in defining these and this is the reason I've asked this question.

I read a lot of questions and articles but couldn't figure out what these three classes ( actually 2) are for and how do they work and how can I implement them in an application. These are some of the questions making me stuck.

Where do we use each one of them? When and Where to use them? How to use them together? With an Example?

It's a request please don't mark it as a broad question i really need to know what they are.

0 投票
0 回答
248 浏览

android - Looper.loop 可以创建多个looper吗

我想知道多次调用 Looper.loop() 是否会创建多个 looper?

代码片段

提前致谢

0 投票
1 回答
1166 浏览

java - Android 客户端:无法在未调用 Looper.prepare() 的线程内创建处理程序

我有来自 python 服务器和 java 客户端的以下代码工作得很好。但是,我想使用相同的概念从带有来自 android 的 ssl 的客户端发送文本消息。以下是我为 Python 和 Java 编写的代码,效果很好。

Python 服务器代码:

这是我的 Java 代码:

我更新了以下 android 代码,但仍有错误:

当我输入要发送的消息时,这是输出(制作套接字的问题:为什么?):