mars视频给力程度我就不赘述,学到18集 的时候,敲了源代码,
程序结果
下载文本:System.out不输出文本
下载MP3:输出-1.
换了tomcat不行,本来用的8,改用tomcat7,发现结果还是一样
觉得很奇怪,然后把代码复制出来,在java里跑,发现结果很正常,
先贴出LOGcat,这个看半天看不懂,承认自己小白.
好,然后各种搜,不知道该怎么搜,android的错误不是自己的错误,
其实这里的第一行已经给出了错误, networkonmainthreadexception,
网络在主线程异常,意思就是不能在主线程?百度了下,度娘里的高手说,安卓4以后不允许在主进程中进行网络连接.
好的,那我开个线程,代码入下,以文本为例:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
downloadTxtButton = (Button)findViewById(R.id.downloadTxt);
downloadTxtButton.setOnClickListener(new DownloadTxtListener());
downloadMp3Button = (Button)findViewById(R.id.downloadMp3);
downloadMp3Button.setOnClickListener(new DownloadMp3Listener());
mThread = new Thread(new Runnable() {
@Override
public void run() {
try {
HttpDownloader httpDownloader = new HttpDownloader();
String lrc = httpDownloader.download("http://edu.gamfe.com/tutor/d/37218.html");
System.out.println(lrc);
}catch (Exception e) {
e.printStackTrace();
}
}
});
}
这是oncreate方法中添加的线程,
下面是按钮监听,sleep保证线程的执行
class DownloadTxtListener implements OnClickListener{
@Override
public void onClick(View v) {
mThread.start();
try {
Thread.currentThread().sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
,好的,看下结果,正确,OK