安卓开发,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报错的几种情况
关于安卓虚拟机使用报错的解决:错误内容(Unable to detect adb version, exit value: 0xc0000409, adb output: adb.exe F)