菜鸟的学习笔记:
(好多时候想着记录一下自己花了好长时间解决的问题,但是一直没有行动,某一天觉得记录这种事情还是有意义的,虽然中间的记录断断续续,也有时候忘记了记录,觉得记录一下也是自己的积累。)
1.mysqlite在eclipse中汉字的乱码问题
通过cmd shell命令录入的信息,在eclipse调试中显示乱码,为编码问题,要使录入信息与读取时编码方式一致,不知道mysqlite编码方式,所以都通过程序来录入和读取从而一致。
2013/3/20
百度定位api使用
1.注意区分1.3.5版本和2.0.0版本的区别。
2.0.0用import com.baidu.mapapi.map.*;
2.xml中MapView 为com.baidu.mapapi.map. MapView,而且必须在初始化BMapManager后再setContentView(R.layout.activity_offline_map);否则会出现无法调用组件MapView。
3/22
1.java中类不要设置全局参数,要将类写成独立的类。
2.控制主线最好只有一条。
2013/3/24
1.注意细节,当出现错误时先检查参数是否正确。
2.当调用百度地图时若不是显示灰色网格,则说明调用了地图,但是经纬度不对;出现灰色网格才是没有显示地图,可能是key的原因,也可能是BMapManager没有start()。
3.待处理问题,百度地图界面的update无法使用,没有响应locationupdatelistener
2012/3/25
1.将雷达图上层和下层的Bitmap合成一个,根据角度返回一个Bitmap,将Bitmap设置成ImageButton上的图片。在这中间合成了一个类,类里面有两个内部类,内部类的访问机制要了解,普通的内部类不能有static数据。
2012/3/26
1.ImageButton在使用时,当图片未得到的时候设置为gone可以不响应点击事件,当图片得到的时候再设置为visible。
2.assets中文件存储到手机sd卡cache中,以后少用root权限。
3. 学习java,每个.java文件中可以有很多类,但是只有一个public类。
2012/3/30
1.AlertDialog 可以用Xml文件布局,步骤如下:注意黄色部分
LayoutInflater locateMdLayout=LayoutInflater.from(LBSDemoActivity.this);
final CheckBox chooseGPRS = (CheckBox)locateMdDialogView.findViewById(R.id.dialog_network_check);
2012/4/7
1.《设计模式》对抽象工厂、单件模式等有一些理解,还需要多看。
2012/4/11
1. manifest中各部分作用
http://www.cnblogs.com/Greenwood/archive/2011/06/13/2079957.html
2012/4/12
1.R.id.
http://blog.csdn.net/kmyhy/article/details/6583804
2012/4/17
1.如何要activity监听某个数据发生变化而做出响应?
可以写一个接口,activity implements这个接口,在override接口函数中做出响应。而在这个数据所在文件register这个接口,在发生变化的地方调用接口函数。
2.textview显示不出来的问题。
要把布局文件放于前面,xml定义为frameLayout,其他控件显示后再设定frameLayout.bringToFront();
3.toast布局。实例如下
View toastView = getLayoutInflater().inflate(R.layout.offmaps_toast,null);
strucNameView.setText(strucName);
2013/4/23
1.利用Handler来实现UI的更新。在需要的地方sendmessage,在主界面写handleMessage即可。
2. getIntrinsicWidth()得到的不是图片的实际大小,而是视图上表现出来的宽度。改为相对布局后有所改善。
2013/4/26
1.getActionBar().getHeight()获得为0的问题,要在view加载完后再调用,否则为0。
2013/4/27
1.java 的GC(garbage collection)容易让人忽略内存泄露的问题。注意的方面有如下几点:
(1)能使用getApplicationContext()时,避免使用this。
在android中有两种context,一种是 application context,一种是activity context。
把activity context传递给view,意味着view拥有一个指向activity的引用,进而引用activity UI占有的资源:view , resource, SensorManager等。application context伴随application的一生,与activity的生命周期无关。不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的。
(2)查询数据库关闭游标。如下修改:
(3)Bitmap在不使用时调用recycle()释放内存。
(4)释放对象的引用。当类内部引用了另一个类对象时,要记得释放对该对象的引用。
尽量使用静态类(全局),避免非静态的内部类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。
(5)AlertDialog.Builder(this);因为用this,包含了对当前activity的引用,造成内存泄露。方法如下:在activity中添加
(6)构造Adapter时,没有使用convertView。
2.内存泄露查看方法,直接用eclipse中的DDMS->Heap点击运行的程序可以查看。
2013/4/28
1.activity生命周期的理解。
onPause:当另一个activity获得焦点或者切换到别的应用程序时,此时要释放资源。
onResume:当该activity重新获得焦点时,要初始化一些操作。将在onCreate中的一些操作移到onResume里来。
2.注意加一些保护措施,比如进行数据库查询时,先检查数据库是否打开,设置某个数据时查看是否为空,以防逻辑上的错误。
继续慢慢地学习着……
2013/5/3
1. 电信2G网络是CDMA,3G网络是CDMA2000,移动和联通的2G是GSM,移动3G是TD联通3G是WCDMA。不一样的网络基带不一样,不能通用。
5/7
1.android 内核 linux。为什么在android 上用java编程,java的平台无关性。
《android 内核剖析》
http://blog.csdn.net/yelbosh/article/details/8035356
java虚拟机 《深入理解JAVA虚拟机》
http://bbs.csdn.net/topics/390251794
5/8
1. 图片根据手机屏幕大小来显示
也可用matrix 来改变的时候出错:
2.activity
finish();//调用finish将activity关闭,防止堆栈溢出
相当于按下back键,告诉 Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重 新入栈,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。
要实现任意activity的跳转要自己设计一个堆栈。
模拟器的话增加模拟器内存。
手机时,内存不足。
5/9
1. error: Error parsing XML: unbound prefix
要加入:
xmlns:android="http://schemas.android.com/apk/res/android"
不能以absolutelayout 开头的标签
用<include>时要用<merge> 标签,避免嵌入重用组件。relativelayout 不能单独用。
2.异步执行任务,处理一些后台的比较耗时的任务。
AsyncTask的简单用法。
http://blog.csdn.net/cjjky/article/details/6684959
5/10
1.java jni
System.loadLibrary(*.so的档案名);
http://blog.csdn.net/conowen/article/details/7522667
2.NDK和Cygwin的安装和使用
注意Cygwin选择要下载的站点,http://mirrors.kernel.org比较快
5/13
1. 高通 Vuforia
2. Java的synchronized 同步机制
(1)把synchronized当作函数修饰符时,锁定的是调用这个同步方法对象。
(2)同步块。当没有明确的对象作为锁,只是想让一段代码同步时,能够创建一个特别的instance变量(是个对象)来充当锁。private
注:零长度的byte数组对象创建起来将比任何对象都经济――查看编译后的字节码:生成零长度的byte[]对象只需3条操作码,而Object lock = new Object()则需要7行操作码。
(3)将synchronized作用于static 函数。
与非static的不构成同步,因为锁不相同。对象名.getClass()与类名.class不同,前者得到Obj所属的对象,后者得到Obj所属的class。锁定时用后者能够锁class。
3.javadoc 使用
右键工程->export->java->javadoc
(1)编码GBK的不可映射字符,要在最后一步设置编码方式
-encoding utf-8 -charset utf-8
(2)软件包 android.view 不存在
将用到的jar包拷贝到“C:\Program Files\Java\jre6\lib\ext”(即jre的安装目录)下
(3)避免发生“导出javadoc的非法字符 \0或者 \65279”这样的错误,将发生错误的java文件用ultraedit打开后,另存为编码格式为 “UTF-8—无BOM”
4.eclipse 快捷键
http://blog.csdn.net/zwhfyy/article/details/4035390
5.javadoc 注释生成插件 JAutodoc
(1)安装:网上很难搜到,分别把下载的features和plugins下的文件拷贝到eclipse安装目录的features和plugins下。
(2)使用方法:http://bupter520.iteye.com/blog/773544
5/14
1.java单元测试方法
property-> add library->JUnit.jar
右键要测试的类,new->JUnit Test Case
http://ryxxlong.iteye.com/blog/649922
assertEquals();来比较运行后的值与所期望的值,如果相同则说明此函数正确。
2. JDK带的一些常用命令及其常用选项
http://blog.csdn.net/hemingwang0902/article/details/6660723
3.java ant
http://www.cnblogs.com/wufengxyz/archive/2011/11/24/2261797.html
5/15
1.this 不能放于static方法中,this代表当前对象
2.String \ StringBuffer\StringBuilder的区别
3. 单例设计模式:
4. List:有序(存放元素的顺序),可重复的集合
5.java中的反射:
获得类对象的方式:
步骤:Obj.getClass -> method = Obj.getMethod -> method.invoke(Obj);
6. 成员内部类:作为外部类的一个成员存在,与外部类的属性、方法并列
7.抽象类的子类继承一个函数时可以加入synchronized标志
如:在抽象类中public abstract int next();
在子类中 @Override
public synchronized int next() {
}
8.java的并发控制——多线程
(1)Future 与Callable配合使用得到线程的返回值。
http://blog.csdn.net/ghsau/article/details/7451464
(2)Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。比synchronized使用和执行成本更低。
当运算时间够长的时候线程调度机制才来得及介入,交换任务并关注优先级。
2013/7/6
1、actionbar上图标显示不出来
menu设置时:
always:菜单项一直显示在Action Bar上。
ifRoom:如果有足够的空间,菜单项显示在ActionBar上。
never:菜单项永远不出现在Action Bar上。
withText:菜单项和它的图标,title一起显示。