1.Activity在处于onPause、onStop、onDestroy状态下,系统都可以销毁该Activity所在进程,所以我们在处理一些要保存的数据时,必须在onPause方法中进行,因为onStop和onDestroy方法不一定会被调用


2.当EditText设置为不可编辑属性时,即setEnabled(false) 或者android:enabled="false"时,

此时无论设置EditText的触摸事件还是点击事件,都是无效的!此时可以将EditText换成TextView 。


3.注意popupwindow的setOnDismissListener事件!有时候很有作用。


4.枚举的本质就是类!


5.LinkedList胜两局:删除和插入效率高;ArrayList胜一局:修改元素效率高。


6.内存泄露:cursor如果不能及时关闭,可能会造成内存泄露!

正确写法:

Cursor c;try { c = queryCursor(); int a = c.getInt(1); ......// 如果出错,后面的cursor.close()将不会执行//c.close(); } catch (Exception e) { } finally{if (c != null) {c.close();}}
但是:Cursor需要继续使用,不能马上关闭?

比如CursorAdapter就是一个典型的例子!!!

mCursor = getContentResolver().query(CONTENT_URI, PROJECTION,null, null, null);mAdapter = new MyCursorAdapter(this, R.layout.list_item, mCursor);setListAdapter(mAdapter);// 这里就不能关闭执行mCursor.close(),// 否则list中将会无数据
这样的Cursor应该什么时候关闭呢?
这是个可以说好回答也可以说不好回答的问题,那就是在Cursor不再使用的时候关闭掉。
比如说,上面的查询,如果每次进入或者resume的时候会重新查询执行。
@Overrideprotected void onStop() {super.onStop();// mCursorAdapter会释放之前的cursor,相当于关闭了cursormCursorAdapter.changeCursor(null);}


一般来说,也只是这种需求,很少需要看不到界面的时候还在不停地显示查询结果,如果真的有,不予讨论,记得最终关掉就OK了。

这个时候,我们一般可以在onStop()方法里面把cursor关掉(同时意味着你可能需要在onResume()或者onStart()重新查询一下)。


8.Android sqlite3查询表中最后一条记录:

sqlite3中貌似没有关于top函数的语法,所以如果需要查找表中最后一条记录可采用如下方法:
比如:查找表sensor中address为aaaa::11:22ff:fe33:4461的最后一条记录

select * from sensor where address = 'aaaa::11:22ff:fe33:4461' order by id desc limit 0,1;  


其中order by id desc 是按照id降序排列;limit 0,1中0是指从偏移量为0(也就是从第1条记录)开始,1是指需要查询的记录数,这里只查询1条记录。

9.sqlite中getReadableDatabase () 和getWritableDatabase () 的区别:

这两个方法都可以获得SQLiteDatabase对象。
getWritableDatabase () 获得一个可进行操作的数据库类。并且查看源代码,了解到获得的是单实例的SQLiteDatabase。因为不论是调用几次,getWritableDatabase () 方法返回的都是同一个连接。
getReadableDatabase () 同样是获得SQLiteDatabase对象。一样查看源代码,了解到getReadableDatabase () 内部同样是调用getWritableDatabase ()来实现获得SQLiteDatabase对象的。但是,getReadableDatabase () 判断一旦getWritableDatabase () 抛出异常(比如存储空间满了),将以只读的方式读取数据库,此时获得的SQLiteDatabase对象将和getWritableDatabase () 获得的不一样。


10.ArrayList和数组间的相互转换:


String[] array = (String[])list.toArray(new String[size]);

List<String> list = Arrays.asList("王利虎","张三","李四");

from:http://blog.csdn.net/brave_heart_lxl/article/details/6178909


11.使用MultipartEntity对文字、图片、视频进行综合上传

from:http://blog.csdn.net/u010142437/article/details/16117411

http://blog.csdn.net/u010142437/article/details/14639651


12.创建新线程的时候默认情况下不会去创建新的MessageQueue;

一个Activity主线程中可以有多个Handler对象,但MessageQueueLooper是只有一个,对应的Looper也是只有一个。


13.Fragmnet生命周期:




更多相关文章

  1. Android源码 更改系统音量
  2. NDK Android* 应用移植方法 APP_ABI := armeabi armeabi-v7a x86
  3. [置顶] Android(安卓)查询距离一个礼拜的记录
  4. Android的menu(菜单)按钮的使用(by星空武哥)
  5. android基于注解实现类似spring服务端框架
  6. 【转】Android中保存Activity的状态
  7. Android中的Service组件详解
  8. 实例讲解Android中ContentProvider组件的使用方法
  9. Android(安卓)自定义 MarqueeView 实现跑马灯 —— 原理篇

随机推荐

  1. Android(安卓)Proguard 如何混淆package
  2. Android(安卓)ListView列表分组
  3. android字体闪烁动画(线程)
  4. Android关于SD卡中多层目录的创建
  5. Android(安卓)Localization
  6. Wakelock API详解
  7. android学习小结3
  8. Android(安卓)网络连接-重试机制-HttpReq
  9. 自定义控件5---TypedArray和AttributeSet
  10. 卡联系人IccProvider