mars视频学习进度1-关于mp3播放器的开发
最近遇到的问题和解决方法:
问题1:
公司上网是需要代理的,因此手机访问Tomcat的地址时异常:java.net.ConnectException:failed to connect to等乱七八糟的错误.
解决1:
a.可以先用浏览器试试能不能访问tomcat的地址,不能的话,在AVD上设置代理,设置代理的位置在设置->网络->移动网络->APN->添加新APN,名字和APN可以乱填,下面的代理和接口设置与本机一致.
b.把Tomcat的地址修改成网络地址,如百度云盘的地址等,这样主要是可以让调试的手机能访问.
问题2:
不能在UI线程中做一些耗时的工作,例如网络访问等,所谓UI线程,既android的主线程,包括onCreate(),onOptionsItemSelected()方法中执行的操作,也算是主线程.异常:NetworkOnMainThreadException
解决2:
利用传统的JAVA线程就能解决,此方法最简单,其他方法供参考,
问题3:
结合问题2导致新问题,不能在非UI线程进行更新UI的操作,异常:Only the original thread that created a view hierarchy can touch its views
解决3:
利用Handler,UI线程中new Handler,重写 handleMessage方法,子线程耗时操作结束通知UI线程更新UI.
2/3简代码如下:
MainActivity extends Activity { Handler handler; onCreate() { netWorkThread nThread=new netWorkThread() Thread t=new Thread(); t.start(nThread); handler=new Handler() { @Override handleMessage() { //更新UI } } } class netWorkThread extends Thread { @Override void run() { //耗时网络访问等 handler.sendEmptyMessage(0);//提醒UI线程进行刷新 } } }
浙公网安备 33010602011771号