Attempt to read from field 'android.os.MessageQueue android.os.Looper.mQueue' on a null object refer

Android小知识-HandlerThread 如果你在开发android项目时想实现一个带消息队列的子线程,那我建议你不要重复造轮子,你可以看看HandlerThread这个类,它就是系统封装好的一个很好用的带消息队列的子线程。其实HandlerThread只是系统对子线程开发需求的一个小封装而已,但是我个人觉得挺实用的。上面代码中的注释已经很详细的说明了HandlerThread的原理,结合它的使用方式看源码应该是一目了然了。Android线程间通信主要方式是使用Handler相信没有一个做Android的人不知道。... 阅读详情

//如果主线程使用了子线程的looper,那么就会报错
mHandler = new Handler(myThread.looper);

Attempt to read from field 'android.os.MessageQueue android.os.Looper.mQueue' on a null object refer

2019-10-08 17:36:39.892 12698-12698/bjpkten.handler E/AndroidRuntime: FATAL EXCEPTION: main
    Process: bjpkten.handler, PID: 12698
    java.lang.RuntimeException: Unable to start activity ComponentInfo{bjpkten.handler/bjpkten.handler.MainActivity}: java.lang.NullPointerException: Attempt to read from field 'android.os.MessageQueue android.os.Looper.mQueue' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.NullPointerException: Attempt to read from field 'android.os.MessageQueue android.os.Looper.mQueue' on a null object reference
        at android.os.Handler.<init>(Handler.java:234)
        at android.os.Handler.<init>(Handler.java:141)
        at bjpkten.handler.MainActivity.onCreate(MainActivity.java:26)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
package bjpkten.handler;

import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    private Handler mHandler;
    private Handler mSubHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyThread myThread = new MyThread();
        myThread.start();

        Log.d("kodulf-","Looper = " +Looper.getMainLooper());

        //如果主线程使用了子线程的looper,那么就会报错
        mHandler = new Handler(myThread.looper);

        Log.d("kodulf-","mHandler Looper = " +mHandler.getLooper());

        mHandler.sendMessage(new Message());


    }

    class MyThread  extends  Thread{
        Looper looper;
        private Handler childHandler;

        @Override
        public void run() {
            super.run();
            Looper.prepare();
            looper = Looper.myLooper();
            Log.d("kodulf-","MyThread Looper = " +looper);

            childHandler = new Handler(new Handler.Callback() {
                @Override
                public boolean handleMessage(Message msg) {
                    return false;
                }
            });

            looper.loop();
        }
    }
}

 

参考:http://www.voidcn.com/article/p-wizxvkry-zg.html

 

解决 Attempt to read from field ‘android.os.MessageQueue android.os.Looper.mQueue‘ on a null object .. 本文阐述了Handler创建时Looper为空的场景,应该很少见,但是如果出现的话,可能也会让人很费解,会让人摸不着头脑,本文给出了常见情况,希望能够给您带来一些帮主。 阅读详情

相关推荐

第十章-Android的消息机制(MessageQueue、Looper、Handler)

一、消息队列的工作原理 消息队列在Android中指的是MessageQueue,MessageQueue主要包含两个操作:插入和读取。读取操作本身会伴随着删除操作,插入和读取对应的方法分别为enqueueMessage和next,其中enqueueMessage的作用是往消息队列中插入一条消息,而next的作用是从消息队列中取出一条消息并将其从消息队列中移除。尽管MessageQueue叫消息队...

pin-csdn的博客 417

HandlerThread源码理解

Android HandlerThread源码分析与运用

u012514113的专栏 1765

psasp和matlab,PSASP与Matlab/SimPowerSystems联合仿真接口方法研究

[1]李亚楼,吴中习.Matlab模型接入PSASP暂态稳定计算模块的方法[J].电网技术,2008,32(19):31-36.Li Yalou,Wu Zhongxi.An Approach to Interface Matlab Model with PSASP Transient Stability Module [J].Power System Technology,2008,32(19):...

weixin_39636245的博客 1082

Handler学习总结

Handler学习总结讲解handler之前,我们要认识到这一点:在activity创建时候,系统会给我们创建一个activity main thread ,这也就是我们所说的UI线程或者Main线程。 要学习handler,就得了解几个重要的关系。 Handler:接收和发送消息,更新UI操作Looper:负责接收Handler发送的消息,将消息存放在MessageQueue里面,通过Looper

ibelieveyouwxy的专栏 2286

tft_espi 中文字体及自定义字体制作(tft.eSPI模块)

tft.eSPI库自定义字体方法 先下载 processing 然后安装到mixly安装目录下找到tft_eSPI文件夹。

琢磨侠的博客 2763

信捷XD/XL系列PLC与C#通信实战:Modbus-RTU协议详解(附完整代码)

本文详细介绍了信捷XD/XL系列PLC与C#通过Modbus-RTU协议实现高效通信的实战指南。从硬件连接到软件配置,再到核心通信功能的实现与优化,提供了完整的代码示例和工业级应用建议,帮助开发者快速构建稳定的自动化通信系统。

weixin_28292761的博客 511

java.lang.NullPointerException: Attempt to read from field 'android.os.MessageQueue android.os.Loope

源代码 修改前: private synchronized void initialize(Bitmap.Config config) { onSetImageStart(); if (mLoadingHandler != null) { mLoadingHandler.removeCallbacks(mInstanceDe...

愤怒的码农 7276

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6599

Uncaught (in promise) DOMException: play() 音频播放报错

Uncaught (in promise) DOMException: play() 音频播放报错,video播放报错的解决办法如下: 开发者解决 1.尽量避免手动创建dom元素, 2.添加预加载属性preload:auto, 3.去掉autuplay属性 , 4.添加静音属性muted 客户端解决   在浏览器地址栏输入:chrome://flags/#autoplay...

Museions的开心博客 2万+

数据挖掘在人力资源分析中的实战案例

在当今竞争激烈的商业环境中,人力资源管理对于企业的成功至关重要。有效的人力资源管理能够提高员工绩效、降低员工流失率、优化人才招聘等。而数据挖掘技术为人力资源管理提供了强大的工具,通过对大量人力资源数据的分析,可以发现潜在的规律和模式,为企业的决策提供有力支持。本文的目的是通过实际案例展示数据挖掘在人力资源分析中的具体应用,涵盖员工绩效预测、人才招聘筛选、员工流失分析等多个方面。通过详细的案例分析,帮助读者理解数据挖掘技术在人力资源管理中的实际操作和应用价值。

移动开发前沿的博客 489

【Bug已解决】npm install -g @anthropic-ai/claude-code 出现 EACCES: permission denied 解决方案

方案适用场景推荐指数nvm 管理 Node长期开发环境,一次配置永久生效⭐⭐⭐⭐⭐修改 npm 全局目录不想引入 nvm,快速解决⭐⭐⭐⭐修复现有目录权限之前用过 sudo 装包,需要修复⭐⭐⭐Windows 管理员/改目录Windows 平台专用⭐⭐⭐⭐官方原生安装脚本想彻底避开 npm 权限问题⭐⭐⭐⭐报的本质是npm 全局安装目录的属主权限与当前执行用户不匹配,而不是 npm 或 Claude Code 本身有问题。不要用sudo"强行"解决。

一键难忘的博客 1万+

Android 开发中遇到的 bug(12)

目录前言正文1. The integer literal does not conform to the expected Int最后 前言 记录开发中遇到的 bug,不再让自己重复地被同样的 bug 折磨。 正文 1. The integer literal does not conform to the expected Int 时间:2020年04月05日17:34:05 问题描述: 在...

willwaywang6 3667

整理 钢琴 约翰汤普森-简易钢琴(小汤)

文件名:(小汤1)约翰-汤普森钢琴1 超清PDF (原版引进)文件名:(小汤2)约翰-汤普森钢琴2 超清PDF (原版引进)文件名:(小汤3)约翰-汤普森钢琴3 超清PDF (原版引进)文件名:(小汤4)约翰-汤普森钢琴4 超清PDF (原版引进)文件名:(小汤5)约翰-汤普森钢琴5 超清PDF (原版引进)文件大小:20.1 MB。文件大小:23.7 MB。文件大小:45.7 MB。文件大小:51.7 MB。文件大小:72.0 MB。

TS的博客 5万+

Handler消息机制二——子线程下如何使用Handler

关于Handler,在哪个线程里面new一个Handler,那么这个Handler对象就运行在哪个线程下,比如,我们通常在主线程里面new一个Handler,那么这个Handler对象就运行在主线程中。同理的如果我们在子线程里面new一个Handler,那么Handler对象就运行在子线程中。不同的是,我们不能直接在子线程里面new一个Handler,因为: 在应用App启动的时候,会在执行程序...

haoyuegongzi的博客 3924

Holt-Winters方法预测水电发电量

Holt-Winters 模型, ARMIA,ACF检验 ,Dickey-Fuller 检测,白噪声检测,差分

firefox_yau的博客 1270

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HandlerThread详解

转载请注明链接: HandlerThread 版本:2018/9/9-1(10:10) HandlerThread 问题汇总 基本使用(7) 源码(7) 问题汇总 【☆】是补充问题,直接给答案。其余问题答案都在文中。 HandlerThread是什么? 【☆】HandlerThread任务是并行处理的? 不是!是串行处理的。如果一个任务执行...

feather(猎羽) 1800

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android消息处理机制(Handler、Looper、MessageQueue与Message)

Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler 平时我们最常使用的就是Message与Handler了,如果使用过HandlerThread或者自己实现类似HandlerThre...

aehvbew8628的博客 374

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android Handler消息机制源码分析——第一部分:Looper与MessageQueue

Android Handler消息机制源码分析——第一部分:Looper与MessageQueue由于在Android中,网络请求不能运行在主线程中,同时一些耗时的操作也不建议运行在主线程中。因此多线程以及线程间通信在Android中显得更为重要了,而安卓SDK中也提供给我们很多的多线程机制,譬如:Handler,AsyncTask,以及基于这些机制而来的IntentService,AsyncSer

优快云文章已停止维护,后续文章会在 https://blog.hufeifei.cn 持续更新 1062

关于Android应用程序消息循环Looper和Handler简析

android version:7.1.1_r6 Android应用程序的消息处理机制也是由消息循环、消息发送和消息处理这三个部分组成 1. 消息循环 frameworks/base/core/java/android/app/ActivityThread.java public static void main(String[] args) { ...... ...

探索未知,成就非凡 520

android-handler-2

next()方法开启一个死循环,首先调用nativePollOnce()方法,来判断是否需要进行阻塞操作,当没有消息需要处理、或者还没到消息的处理时间时,则进行休眠操作。Looper中的loop()方法开启死循环,会不断的从消息队列中取出消息(通过调用MessageQueue.next()方法取出消息),然后调用目标Handler(即发送该消息的Handler)的 dispatchMessage()方法分发消息,目标Handler收到消息,调用 handleMessage()方法,接收消息,处理消息。

娜娜子_的专栏 199

Android中的Handler, Looper, MessageQueue和Thread

参照改编 : http://www.cnblogs.com/xirihanlin/archive/2011/04/11/2012746.html 对于这部分的内容,将分成4小节来描述: 1.职责与关系 2.消息循环 3.线程与更新 4.几点小结 ---------------------------------------------------

Jason_WKS的专栏 3503

关于handleStopActivity()的NullPointerException

# main(1) java.lang.NullPointerException Attempt to read from field 'android.app.Activity android.app.ActivityThread$ActivityClientRecord.activity' on a null object reference android.app.ActivityThread.handleStopActivity(ActivityThread.java:3983) andro.

quange14的博客 909

解决“java.lang.NullPointerException:Attempt to read from field

解决异常 java.lang.NullPointerException: Attempt to read from field ‘int android.view.View.mViewFlags’ on a null object reference 记录一下 很多资料都写的是动画加载问题 我自己的代码没有任何动画 所以不存在动画加载问题 那么只能排查!最后发现是后台数据返回不正确导致 正常是在返回data 和分页 pageEntity 对象是有数据的! 这次返回都是null 导致渲染数据没有判空出现的

weixin_43148719的博客 1万+
上一篇: Bitmap.createBitmap
下一篇: BitmapDrawable 千万不要使用bitmap.recycle
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值