StringBuffer和StringBuilder的区别:前者是线程安全但是效率低下;后者是效率高,但是在多线程的时候会不安全,两者相对于String的优点是:适合于拼接字符串,不会产生很多垃圾变量,在String拼接时,每拼接一次就要必须声明一个变量了
变量的声明:static类即为静态变量也是类变量static variable ,局部变量也是本地变量local variable 成员变量也是实例变量instance variable
多态的体现:重载能够体现编译时多态。而重写能够体现运行时多态了
生命周期方法的对应: onStart-----onStop ,onCreate---onDestroy ,onResume---onPause,这对于资源的节省,回收都很有用,因为在页面跳转的时候,会之星对应的生命周期的方法了,但是例如为了变量资源的节省,可以在onStart方法中声明实例,在onStop方法中释放资源对于bitmap则有recycle了,这样当再次返回这个页面的时候,就才会被重新实例化,不在这个页面的时候就回收它,这就有效的节省了资源了。android中分配图片内存是8兆
在android尽量少使用System.out.println来输出了,尽量使用log在logcat控制台输出了
listView这类列表项的优化:优化原理:因为列表项会很多,屏幕大小有限,一次不能够显示所有的列表项,所以这个时候就会牵涉到列表项加载的问题了,当然我们一般使用BaseAdapter来给列表提供数据,那么就会不断的调用重写的getView方法了,那么就会牵涉到ConvertView的实例化了,所以优化的点就在这里了,最好的实现方式就是在定义一个ViewHolder类,来缓存模板里面的组件,实例代码如下:class ViewHolder{ ImageView img; TextView tv; //这些变量就属于全局变量了,也是能够被外部类方法用类名直接调用的了,因为这个类是内部类 };在getView方法内部有if(convertView==null){ LayoutInflater inflater=getLayoutInflater();convertView=inflater.inflate(R.layout.youhuabuju, null); holder=new ViewHolder(); holder.img=(ImageView) convertView.findViewById(R.id.youhuaimg); holder.tv=(TextView) convertView.findViewById(R.id.youhuatv); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.tv.setText(list.get(position).get("name").toString()); Options op=new Options(); op.inSampleSize=2; op.inJustDecodeBounds=false; Bitmap 这里其实还有使读出的图片缩小比例显示的方法bit=BitmapFactory.decodeFile(list.get(position).get("path").toString(),op); holder.img.setImageBitmap(bit); return convertView;这便是优化代码j
建立虚拟器时要注意的问题:对于低版本的手机,有的参数可以不给,但是针对于高版本的手机则是必须好像每个参数都得设定了吧,例如针对于4.0.3版本:那个CPU/API的参数就得选择了,但是针对于低版本就不用给其赋值了,就是这个意思
对于异常的处理:首先千万不能够写一个大的Exception来catch了,处理方法:将异常throws掉,那样的话将异常抛给了函数调用者;第二种Throw一个新的与该函数合适的Exception,就是讲报错的信息已新的异常的形式展示出来给用户;第三种如果是针对于变量赋值的,那么在catch中给变量赋一个默认值;第四种Throw出一个Runtime异常,这一般是在程序要崩溃的时候才回抛出的异常,所以在确定会有异常出现的时候,在进行此操作
命名规则概述:对于包名,一定要小写,另外应该遵循这种格式:com.公司名.功能名.模块名;对于类名的话,首字母大写,另外能够体现出功能,另外如果是有好几个单词组成的话,那么每一个单词的首字母都应该大写,继承某个类的话,类名应该以其继承的类的名字结尾;方法名小写,如有好几个单词组成的话,那么从第二个单词开始首字母都应该大写;变量名称,非public非static类的变量声明的时候都应该以m(member)来开头了,如果是静态变量应该以s(static)开头了,另外对于常量都应该大写声明了
避免内存泄露:应该有register和unregister对应起来了,就是注册的话,那么就得解除注册,一遍回收资源,其实服务也是配对的了,这和生命周期的对应方法有关系了
针对于输入框输入完成的操作设置属性:imeOptions属性,就是能够在输入之后这个文本框要值姓什么功能了,是要搜索还是下一个还是什么了,等等
实例化LayoutInflater的三种方式:首先通过getLayoutInflater();其次可以:LayoutInflater.from(上下文对象);最后就是getSystemService(Context.LAYOUT_INFLATER_SERVICE);
对于高版本的手机它的sdcard所在的位置是:在对应的一个mnt文件夹下面的sdcard下面了,另外会有一个和mnt在同一级别的sdcard文件夹了,这两个sdcard是同一个,就是里面的东西是同步的,只是一个显示一个不显示子目录及文件而已
关于对话框的属性:setCancelable指代是否可以通过点击手机上的back键来取消对话框,setCanceledOnTouchOutside指代是否可以通过点击对话框以外的部分来取消对话框了,使对话框消失的方法有dismiss和cancel,两者作用一样的,但是后者可以在调用了cancel的时候,能够调用onCancelListener监听方法了
对于初始化即为组件的获得:就是如果在一个Activity里面要活的很多组建的话,那么就可以将获得组件的即为findViewById的代码写在一个方法里面,给UI线程减轻负担了,但是一定要在掉这个方法了,就是这个意思了
在cmd窗口里面查询本机当前所有的ip地址的命令:ipconfig
关于127.0.0.1和和localhost代表什么:其实说就是本机了,但是本机是什么呢?其实它是不确定的,它是指程序所运行在的那个设备,可能是电脑,也可能是手机,更可能是现在所运行的虚拟机了
图片接口:http://121.101.223.198/cms2011/upload/20112171312530986504.png ;http://121.101.223.198/cms2011/upload/20112351314093540743.png
在android中添加服务器的方法:window---preferences---server---Runtime Environment---Add---然后选择tomcat版本---然后选择tomcat安装完成后生成地那个根目录就是文件夹(同时还得选择JRE了)
在android中建立Web工程的方法:同样是new了,然后选择Web,然后选择Dynamic Web Project了,即可同样它会让你选择使用j2EE还是用java界面运行了,就用java就行了
如何启动服务器:在window----show view----然后找到server下面的servers视图即可,这样的话在下面既能够选择服务器了,就能够启动了
如何运行一个servlet文件:在Web工程下面的对应文件上右击-----run as---run as on server再选择服务器即可了
如何避免ANR:可以通过handler和子线程的组合;也可以通过ASyncTask类了;
Handler运行机制:就是每一个主线程也即UI线程都有一个且只有一个Looper()来管理消息队列也即MessageQueue了,所有的消息都是放在消息队列中的,所以子线程中有什么消息是要放在消息队列了,
pull解析;手动触发可以终止事件; |
|