`

Android笔记

阅读更多

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。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics