1、笔记
Android基本控件大概有以下几个TextView(标签)、EditText(文本框)、Button(按钮)、Menu(菜单)、RadioButton(单选框)、CheckBox(多选框)、ProgressBar(进度条)、ListView(集合列表)。
Spinner(下拉框)、DatePicker、DatePickerDialog、AutoCompleteTextView(自动完成文本框)、SeekBar(拖动进度条)、RatingBar(评分控件)、ExpandableListView(多级集合列表)、AppWidget(小工具,挂件)、Animation(动画)
四大组件 Activity、Broader Receiver 、Service、Content Provider
2、问题
问题1:Android adb shell 命令报 error:device not found 或者 error:空白, Android模拟器已正常启动。
解决:输入adb kill-server 命令干掉服务,解决。
问题2:Android在进行Http访问时报socked failed EACCES(Permission denied)。
解决:在AndroidManifest.xml配置文件中加入
<uses-permission android:name="android.permission.INTERNET"/>
加入上面标签后,可能依旧报错,报Android.os.NetworkOnMainThreadException异常。原因是因为在Android升级版本(目前Android4.0),Android为了防止当网络卡的时候,可能会导致Activity未响应,因此Android规定访问网络只能开启一个新的线程去处理。以下是解决方法。
1.可以在Activity中重新开启一个线程去处理网络访问。建议使用
2.或者在Java中加上以下代码,强制Android不去校验。
if (Build.VERSION.SDK_INT >= 11) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads ().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
}
问题3:当需要进行一些耗时操作时,需使用多线程处理,在线程处理完后更新Android UI时,经常会报异常android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views。该异常表示更新UI只能有原来创建该UI的线程去更新,不能使用其他线程来更新UI。
解决:第一种使用Activity的runOnUiThread方法去更新线程。
第二种使用Handler的回调函数,在Runnable方法中更新UI。
第三种使用AsyncTask的onPostExecute方法中更新UI。