子线程Handler.sendMessage 报错:Attempt to invoke virtual method 'boolean android.os.Handler.sendMessage

同济土木非0基础三个月跨考复旦计算机攻略 跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课 阅读详情
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime: FATAL EXCEPTION: main
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime: Process: tech.androidstudio.tulingdemo, PID: 16029
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime: java.lang.IllegalStateException: Could not execute method for android:onClick
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.view.View.performClick(View.java:4761)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19767)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5310)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:  Caused by: java.lang.reflect.InvocationTargetException
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.view.View.performClick(View.java:4761) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19767) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5310) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.sendMessage(android.os.Message)' on a null object reference
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at tech.androidstudio.tulingdemo.MainActivity.btnSendMessage(MainActivity.java:65)
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.view.View.performClick(View.java:4761) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19767) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5310) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 

03-17 08:10:18.760 16029-16029/tech.androidstudio.tulingdemo E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 


原因分析 :

 子线程handler 报错,是因为没有启动子线程就开始使用了。


解决办法:

在onCreate方法中启动Thread,千万别忘了Thread里面的this 参数,不然还会报错。

Thread thread = new Thread(this);
        thread.start();


public class MainActivity extends AppCompatActivity implements Runnable {
private EditText mEditText;
    private ListView mListView;
    private List<String> mData;
    private ListViewAdapter mAdapter;
    private Handler subHandler;
    private Handler mainHandler;
    private final int MAIN_HANDLER_ADD=98;
    private final int SUB_HANDLER_ADD=998;
    private final int SUB_HANDLER_EXIT=199;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mEditText=(EditText)findViewById(R.id.editText);
        mListView=(ListView)findViewById(R.id.listView);
        mData = new ArrayList<>();
        mAdapter = new ListViewAdapter(mData,this);
        mListView.setAdapter(mAdapter);
        mainHandler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                int what = msg.what;
                switch (what){
                    case MAIN_HANDLER_ADD:
                        String msg_reply = (String)msg.obj;
                        mData.add(msg_reply);
                        mAdapter.notifyDataSetChanged();
                        break;
                }
            }
        };

        //千万别忘了启动子线程,不然会报错
        //Attempt to invoke virtual method 'boolean android.os.Handler.sendMessage(android.os.Message)' on a null object reference
        Thread thread = new Thread(this);
        thread.start();
    }



    public void btnSendMessage(View view) {
        String message_send = mEditText.getText().toString();
        if(message_send!=null){
            mData.add(message_send);
            mAdapter.notifyDataSetChanged();
            //将要发送的消息发送给子线程,(给子线程的handler),因为耗时操作不能在主线程进行
            // 然后子线程请求数据再返回给主线程(主线程的 handler),因为 子线程不能修改界面的UI
            Message message = Message.obtain();
            message.what=SUB_HANDLER_ADD;
            message.obj=message_send;
            subHandler.sendMessage(message);//之前报错的位置是这一步
        }
    }

    @Override
    public void run() {
        //绑定 当前线程的Looper
        Looper.prepare();
            subHandler= new Handler(){
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    int what = msg.what;
                    switch (what){
                        case SUB_HANDLER_ADD:
                            //获取发送的消息,然后通过HttpUtils来发送,并且得到返回值,
                            //把这个返回值 再给主线程的 handler来处理。
                            //先写一个模拟数据 ,例如"收到了"发送给主线程。
                            Message message = Message.obtain();
                            message.what=MAIN_HANDLER_ADD;
                            message.obj="收到了";
                            mainHandler.sendMessage(message);
                            break;
                        case SUB_HANDLER_EXIT:
                            //在onDestroy里面停止这个Looper
                            Looper looper = Looper.myLooper();
                            looper.quit();
                            break;
                    }
                }
            };
        //不停的循环 ,就像是while一样。
        Looper.loop();
    }
}

通过实例讲解瀑布模型 在电子商城开发中,瀑布模型如同 “工业时代的流水线”—— 能通过标准化流程交付高质量、高合规性的系统,但也可能因缺乏灵活性而错失市场机会。其优势与缺点本质上源于同一核心特征:严格的阶段性与文档驱动。决策建议若开发传统型、长周期、需求固定的电子商城(如企业内部采购平台),可优先选择瀑布模型,并通过 “需求预验证 + 模块化设计” 降低风险;若开发创新型、短周期、需快速迭代的电商平台(如社交电商、跨境电商),建议采用敏捷模型或混合模型(如瀑布 + Scrum),平衡规范性与响应速度。 阅读详情

相关推荐

Doris副本修复实战:从状态机到手动修复的完整指南

在分布式数据库系统中,多副本机制是实现高可用与数据一致性的核心技术。其原理是通过在不同节点存储数据的多个拷贝,确保部分节点故障时服务仍可继续。这项技术的核心价值在于保障数据可靠性,并支撑在线分析处理(OLAP)等对数据一致性要求高的应用场景。当副本出现损坏、丢失或版本不一致时,系统通常依赖自动修复机制,但在元数据损坏、多副本同时故障等复杂场景下,自动修复可能失效,需要深入理解副本状态机并借助手动工具介入。本文将聚焦Doris数据库,解析Tablet副本状态流转(如BAD、VERSION_ERROR),并详细

weixin_32288959的博客 458

android开发出现常见问题:内存泄露、service无法启动等

handler空指针: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean android.os.Handler.sendMessage(android.os.Message)’ on a null object reference 本质原因时service无法启动,所以无法获取s...

pvmsmfchcs的博客 643

Unity调用手机摄像头避坑指南:从权限检测到自动对焦问题解决

本文深入解析了Unity移动端集成手机摄像头时遇到的权限、对焦与性能等核心难题。针对权限管理,提供了健壮的原生接口调用方案;针对自动对焦模糊问题,详细对比了原生插件与第三方插件两种解决路径;并分享了分辨率选择、数据处理及功耗控制等关键性能优化技巧,帮助开发者构建稳定高效的摄像头功能。

weixin_29007243的博客 470

解决Android Handler的handleMessage()方法内TextView.setText偶尔不执行的问题

前言 最近项目中要加一个体温测量的外设模块 利用android的串口通信 可以完美的取到测量的体温数据 获取到数据后,在用Handler发送数据到View渲染时 发现一个问题 就是数据能测量到 但是渲染到 TextView时有时无! android串口通信CH340转USB android串口通信CH340转USB(可参考) handleMessage 在使用Handler通信时,handleMessage()这个方法内渲染TextView数据 偶尔会丢失数据渲染 这个问题出发,寻找解决方案: 看到这样一个

吕氏春秋i 2834

Mediapipe姿态估计——用坐标计算手指关节弯曲角度并实时标注

利用mediapipe搭建姿态检测模型;mediapipe人体标注节点坐标;mediapipe计算手指弯曲角度并实时渲染;mediapipe计算关节弯曲角度。mediapipe手势识别;mediapipe姿态检测模型;mediapipe学习。

kalakalabala的博客 1万+

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

gcd,lcm

罗勇军的博客 7602

求大神帮忙看看: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androi

日志报错:E/AndroidRuntime: FATAL EXCEPTION: main Process: com.newsClient.activity, PID: 4422 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.newsClient.activity/com.newsClient.activ...

qq_38713915的博客 2135

ZYNQ平台AXI DMA传输避坑指南:如何快速定位‘errors:200‘等中断故障

本文详细解析了ZYNQ平台AXI DMA传输中常见的'errors:200'等中断故障,提供了从寄存器解析到压力测试的完整解决方案。通过深入分析XILINX_DMA中断机制、错误分类及五步排查法,帮助开发者快速定位并解决DMA传输问题,提升系统稳定性与性能。

weixin_29159613的博客 439

Attempt to invoke virtual method ‘…’ on a null object reference

Attempt to invoke virtual method ‘…’ on a null object reference 遇到了两次这样的提示,逐个解析之。 一、只声明,未创建。如下代码: public class SortMallFragment extends Fragment { ... ... private ArrayList<Fragment> rightFragments; @Override public void onViewC

weixin_45681602的博客 1万+

生信技能53 - WisecondorX自动化批量npz转换和reference构建

wiseconrdoX分析CNV适用于CNVseq、NIPT和WGS等项目。

LittleComputerRobot的博客 465

实战:RK3568 Android14 调试 ES8388 音频驱动 (MIC 篇)

这个板子的MIC设计使用了硬件自动切换方案,极大简化了软件层面的逻辑。我们不需要根据耳机插拔事件去编写复杂的路由切换代码,只需要守住 LIN1/RIN1 这一个入口,配置好增益,剩下的交给那颗 SGM3157 芯片即可。祝您的录音功能调试顺利!

qq_33427070的博客 1677

handler.sendMessage(massage)报错

Android socket多线程发送消息时闪退,控制台无报错信息,debug 报错信息: E/ngjing.chatroo: [qarth_debug:] get PatchStore::createDisableExceptionQarthFile method fail. E/AndroidRuntime: FATAL EXCEPTION: Thread-5 Process: com.zzu.songbingjing.chatroom, PID: 6137 java.lang.N...

qq_43798290的博客 3142

从零实战:模拟Soul/陌陌附近的人接口爬虫(设备指纹·加密逆向·动态代理全解)

在移动互联网流量见顶的今天,LBS(基于位置的服务)社交平台——尤其是Soul和陌陌——依然掌握着海量高活用户的地理位置画像、兴趣标签、在线活跃时段等敏感数据。对于市场调研、流量运营、甚至是城市热力分析而言,“附近的人”接口是一个极具价值的入口。然而,这两款App均采用全参数加密 + 设备指纹风控 + WAF动态防御的三重护城河。直接使用Requests库调用公开API无异于以卵击石。本文将从逆向工程视角出发,完整还原一套可用的附近人信息采集方案,涵盖:抓包与流量分析(绕过SSL Pinning)

2201_76125261的博客 210

android 报错Attempt to invoke virtual method

1.报错信息如下 java.lang.RuntimeException: Unable to start activity ComponentInfo{yixing.artshow/yixing.artshow.activity.SetInputActivity}: java.lang.NullPointerException: Attempt to invoke virtual method

u011489887的专栏 6万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android报错:Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference 一、id名大小写 1、项目中遇到空指针异常,具体定位到Java文件, 2...

JUN_LLLL的博客 3万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android.content.Intent.migrateExtraStreamToClipData() on a null object reference

wifiapp一开始是按照无界面设计的,相当于是一个service,所以在AndroidManifest.xml中把给注释了,导致测试intent拉起app功能时报错java.lang.NullPointerException。

JiangHaiM的博客 1183

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android消息处理机制--Handler 超详细通俗的解读

Handler是什么每个Handler在创建的时候,都会与一个Looper绑定,UI线程有一个默认的Looper,所以在Activity类的字段中中直接创建Handler,也就是在UI线程中创建Handler就会默认绑定UI线程的Looper,绑定了哪个Looper,就只能给哪个looper发送消息,如果没有绑定Looper那么调用Handler的sendmessage等类似的发送消息的方法就会报错

超神冉 3204

java.lang.NullPointerException: Attempt to invoke virtual method.....

java.lang.NullPointerException: Attempt to invoke virtual method...这是很多人常出现的异常报错,这篇文章将详细讲解各种情况以及如何找出出错的位置方便我们快速解决

weixin_52263647的博客 5万+

android switch button 报 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean

在使用switch时,在Android 5.0版本时会报空指针异常 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.drawable.Drawable.getPadding(android.graphics.Rect)' on a null object refe

shaaiwei521的专栏 4623

Handler:sendMessage使用时候报错:

Handler使用时候报错: java.lang.IllegalStateException:{xxxxxx}This message is already in use. 字面意思就是message 已经被使用。原因就是同一个message对象多次重复发送。 解决方法也很简单: 重新 new Message();或者调用handler.obtainMessage(); 都可以解决。 建议使用 handler.obtainMessage(); 具体原因可以看 添加链接描述 ...

qq_33502707的博客 742

【Android错误】Handler.SendMessage()

Android错误——Handler.SendMessage() 错误 :Cannot resolve method 'sendMessage(android.os.Message) private void sendMsg(int what,Object object){ Message msg=new Message(); msg.what=what; ...

Alvin的博客 2826

android sendEmptyMessage()和sendMessage()误用导致handleMessage出现错误

在项目当中有电池管理的部分,当通过485接口发送指令给电池矩阵并正确返回数据后是调用了代码中的onDataReceived方法,通过里面的子线程获得数据,然后通过handler将数据发送到主线程做分析和UI修改等工作,但由于不注意sendMesage的使用,在代码当中开始这样编写: Message mMessage = cmdHander.obtainMessage();

BlackSmith 3663

android启动报错,Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'

错误内容: 解决办法: xml文件中 &lt;view style="@style/h_line" android:layout_width="match_parent" android:layout_height="@dimen/line_height"/&gt; 改为: &lt;View style="@style/h_line" andr...

bruce_w的专栏 5074

Android报错:Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'

项目中遇到空指针异常java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference具体如图: 再看下面具体的错误定位在RegisterActivity.java:31:这一行是

hust_twj的专栏 2万+

Android异常:Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'

Android异常:Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference 在使用LayoutInflater.from(context).inflate(R.layout.my_view,null)出现了空指正异常,而且Layo

lplj717的博客 2万+

报错android.view.InflateException: Binary XML file line #11: Attempt to invoke virtual method 'boolean...

出现这种问题,打开Android monitor的调试信息发现是android.view.InflateException: Binary XML file line #11: Attempt to invoke virtual method 'boolean。。。 后经过查找,发现: <view android:layout_width="1d...

394
上一篇: Android 中调用线程thread.stop 方法后报错,Deprecated Thread methods are not supported.
下一篇: Android 主线程handler 和子线程handler的通讯实例,图灵机器人(本地模拟回复,暂时没有网络请求)
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值