安卓开发,java线程报错的问题,handler空指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓开发,java线程报错的问题,handler空指针相关的知识,希望对你有一定的参考价值。

class Test extends Activity

private Handler mhandler;

onCreat()

new Thread()
public void run()

try
while(true)

mhandler.sendEmptyMessage(0);//?????????????为什么这句会一直报空指针异常的//// //错,mhandler为什么是空呢,想不明白
sleep(3000);



//定义一个匿名线程,让里面的内容隔3秒一致运行

mhandler = new Handler()

public void handleMessage(Message msg)


//onCreat
//class
如果只把try/catch加在sleep(3000)外面就不会报错,这是为什么呢

抛空指针是应该的 因为mhandler在指向new Handler之前是指向null的

onCreate方法优先执行了 所以抛出空指针

把代码改成:

public class MainActivity extends Activity

    

private Handler mhandler = new Handler()

   public void handleMessage(Message msg)

    System.out.println("收到");

   

;


protected void onCreate(Bundle savedInstanceState)

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

new Thread()

public void run()

while(true)

try

mhandler.sendEmptyMessage(0);

sleep(3000);

catch (InterruptedException e)

e.printStackTrace();

           

.start();


追问

但是如果把mhandler.sendEmptyMessage(0);放在try的外面就是对的,这是什么原因呢

追答

这个线程是3秒执行一次 如果放在外面就是3秒后再执行 那时mhandler已经指向new Handler()了

参考技术A mhandler是在onCreate之后才创建的,当然是空指针了 参考技术B 这个数据没有准备好就去访问当然异常了 参考技术C 打酱油的,忽略! 参考技术D 自己百度去--------

Unity 打印安卓apk报错的日志

文章目录

环境

1.华为手机打开调试模式:

【设置】|【关于手机】|【版本号】点三次。

2.unity3d 环境设置:

【File】|【Building Settings】开启必备选项 (其他非必选,最好勾上):

  • Development Build
  • Script Debugging

连接安卓手机

1.usb 连接安卓手机。

2.【Edit】|【External Tools】找到 Android Sdk 的安卓路径。进入 Sdk Install Path / platform-tools 目录,在该目录下,打开 cmd 命令窗口(建议安装 Git Bash,右键 Git Bash 直接打开)。

3.查看已连接的设备,确保电脑已连接手机。

./adb.exe devices  


4.,在窗口执行 log 监听命令之后,在手机上运行 apk

# 参数 unity 表示只打印 unity 相关的日志, E 表示不可解决的错误。

# window
./adb.exe logcat -s Unity 

# git bash 只看 error 日志
./adb.exe logcat -s Unity | grep "E Unity" --color

grep 是 git bash 工具提供的命令,window自带的cmd没有这个命令。

附录

[1] Logcat 命令行工具

以上是关于安卓开发,java线程报错的问题,handler空指针的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.NullPointerException报错的几种情况

Android开发之新建项目报错的问题

Unity 打印安卓apk报错的日志

关于安卓虚拟机使用报错的解决:错误内容(Unable to detect adb version, exit value: 0xc0000409, adb output: adb.exe F)

安卓Handler消息处理机制详解

安卓 Handler