问题标签 [android-handlerthread]

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 投票
1 回答
53 浏览

android-service - 使用android IPC机制的时机

在 Android 中有几种方法可以做 IPC - Content Provider, Message, AIDL, Async Task, IntentService ...

似乎他们每个人都旨在解决特定的问题。

如何决定我应该使用哪个?

我需要一个服务在后台继续运行,同时其他服务或活动可能会从该服务获取数据。

提前致谢!

0 投票
0 回答
369 浏览

android - 为什么 ViewRootImpl$CalledFromWrongThreadException 不准确?

从非 UI 线程逐行更新 TextView(通过setText()旧行到新行)的片段:

代码执行会导致具有不同堆栈跟踪的CalledFromWrongThreadException(请检查下面的“Stacktrace #1”“Stacktrace #2”)。在这两种变体下(从普通的无循环线程或从内部有 Looper 的HandlerThread更新视图)异常抛出并不精确——事件不会在每次通过工作线程更新 UI 后准确发生。

有没有人想过为什么具有以下调用例程的系统行为(在相同的输入条件下)不是持久的?

Stacktrace #1(频率:高;大多数时候)

Stacktrace #2(频率:罕见;捕获一次)

注意

  1. 没有错误“只有创建视图层次结构的原始线程可以触摸它的视图”当视图更新时没有延迟说明并没有完全涵盖问题(仅“Stacktrace #2”)。
  2. 操作系统:安卓6.0。
0 投票
1 回答
667 浏览

android - Android操作系统会自动杀死HandlerThreads吗?

假设我有一个班级,我HandlerThreadApplication它来做一些背景工作。我需要自己停止这个线程还是会被操作系统连同Application实例一起杀死?我的代码看起来像这样。

0 投票
1 回答
2084 浏览

android - HandlerThread的handleMessage()没有被调用

我在使用 HandlerThread 和 Handlers 时遇到了一个奇怪的问题(通过 Handlers 我的意思是 android.os.handler)。我正在尝试将消息从我的片段传递到单独的处理程序线程。我只是设置了一个handleMessage 来处理消息。但它没有被调用。在使用 start() 启动线程后,我得到了处理程序线程的 looper(在准备好 looper 之后)。我还检查了处理程序是否使用 hasMessage() 获取了消息。一切安好。我很困惑。请帮助我。我的代码如下。

片段代码:

处理线程

0 投票
1 回答
2755 浏览

android - Android 中的完成处理程序

我是一名 iOS 开发人员,最近刚刚尝试了 Android 开发。

在 iOS 中,我在代码中使用完成处理程序。

我想知道在Android开发中是否有类似的东西?

谢谢

0 投票
3 回答
717 浏览

android - 处理程序线程 - NetworkOnMainThread 异常 (android.os.handler)

这不是上面发布的问题的重复。当 HAndlerThread 启动一个 newThread 并且我得到一个 NetworkOnMainThread 异常时,我认为这是一个奇怪的错误。解决正常的 NetworkOnMainThread 异常是全新的问题。请取消标记。

大家好,首先我正在练习 HandlerThread 的。我已经使用 Fragment 启动了一个处理线程并向线程发送消息。在 HandlerThread 的句柄消息中,我使用网络调用来下载图像。然后我使用 MainThread 的处理程序将下载的图像发布到 UI 线程。但是当运行这个应用程序时,我得到一个 NetworkOnMainThread 异常。下面是片段和处理程序线程的代码。

分段:

处理程序线程:

Activity 的 loadImage 方法:

此外,当我使用日志检查我在哪个线程(在 HandlerThread 中的 handleMessage 内)时,我会收到一条日志消息,就像我在 Main 中一样。这怎么可能?难道我做错了什么?

0 投票
1 回答
211 浏览

android - 让许多 HandlerThreads 活着,什么都不做,只是等待是不是很糟糕?

我在我的 Android 项目Handler中与all over 一起使用。HandlerThread我在服务中使用其中的大部分。在那里,由具有低优先级的单个 HandlerThread 支持的我的处理程序被创建onCreated()并停止在onDestroy().

他们中的许多人一直在等待。例如,他们每五分钟处理几秒钟的东西。

我的应用程序总共有大约 20 个线程(其中一半是 HandlerThreads)。那么,打开这么多线程是性能问题吗?在Java 中有线程等待是不是很糟糕?我知道,它应该是正确的。我只是想检查一下,这是否也适用HandlerThread

0 投票
2 回答
513 浏览

java - 为什么为一个目的创建 HandlerThread:将它的 Looper 传递给一个新的 Handler

如果我们看到下一件事,我在代码中看到了很多示例:

您还可以在以下位置找到它:

https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/OpenDownloadReceiver.java

https://github.com/CyanogenMod/android_packages_apps_Gallery3D/blob/8621799408a58f6b9da3492382ce929b3c93c7de/src/com/cooliris/picasa/PicasaService.java

为什么他们HandlerThread只为一个目的创建一个:将它传递Looper给一个新的Handler. 为什么不只是扩展HandlerThread并在那里执行所有代码(methodA())?或者创建一个 Handler 实例并在那里调用:

0 投票
0 回答
101 浏览

android - 当我们需要在执行过程中启动和取消进程时,IntentService 是正确的选择吗?

我需要在后台从外部存储读取选定的文件,然后使用 Universal Image Loader 下载图像,而在从外部存储读取文件的过程中或在图像下载过程中,用户应该可以选择通过选择另一个文件来取消该过程从外部存储读取,然后下载图像。我使用 IntentService 从外部存储 startService() 读取文件,而当我需要取消当前读取过程并启动所选文件的过程时,这是正确的方法吗?或者我需要使用 HandlerThread/Service/Thread

0 投票
1 回答
943 浏览

android - 来自处理程序 postDelayed 的条件信号?

我对Android编程很陌生,所以请原谅我的无知...

我正在尝试做简单的Android应用程序:

  • 用户按下按钮,启动 postDelayed 作业,然后等待条件变量
  • 超时后 postDelayer 作业应该发出信号

    /li>

发生的情况是 buttonClick() 一直在等待,超时后我什至没有看到“---> timeout notify”消息......

我做错了什么?

编辑:试图修复混乱的例子......