android,一个破功能搞了一天

Android 码拜 5年前 (2016-05-29) 595次浏览
public class Mp3ListActivity extends ListActivity {
private static final int UPDATE =1;
private static final int ABOUT =2;
@Override
//在用户点击meuu按钮之后,会调用该方法,我们在这个方法加入本人的按钮控件
public boolean onCreateOptionsMenu(Menu menu) {
//groupID,itemid,排序,title
menu.add(0,UPDATE,1,R.string.mp3list_update);
menu.add(0,ABOUT,2,R.string.mp3list_about);
return super.onCreateOptionsMenu(menu);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//点击触发事件
if(item.getItemId()==UPDATE){
//点击更新列表按钮
String xml =downloadXML(“http://192.168.1.41:80/mp3/resources.xml”);
System.out.print(“xml–>”+xml);
}
else if(item.getItemId()==ABOUT){
//用户点击了关于按钮
}
return super.onOptionsItemSelected(item);
}
private String downloadXML(String urlStr){
HttpDownloader httpDownloader =new HttpDownloader();
String result =httpDownloader.download(urlStr);
return result;
}
}
android,一个破功能搞了一天
这是不是cpu占用还是什么鬼,本人是改不了。死了
解决方案

5

 String result =httpDownloader.download(urlStr);
这是同步还是异步?
ANR发生, 一般都是UI线程被卡死5秒以上, 就可能产生.
排除问题时, 需按步骤排除.
1. 是什么情况下触发ANR的.
假如是启动就触发, 那么注需要先注释掉onCreate中的某些初始化操作,
假如是点击某个按钮, 响应函数中导致, 则一步一步注释里面的代码

5

什么视频,这样写是肯定不行的。在android上连网的东西一定不能放到UI线程(主线程)。连网的操作要放到另外的线程,配合Handler进行界面的更新

5

String result =httpDownloader.download(urlStr);
既然是这里阻塞了UI线程, 那么只需要把这个放到线程中去执行就行了.

5

首先要明白这个IP地址是想当然写的么
“http://192.168.1.41:80/mp3/resources.xml”);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android,一个破功能搞了一天
喜欢 (0)
[1034331897@qq.com]
分享 (0)