Android(安卓)注
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;
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生命周期:
更多相关文章
- Android源码 更改系统音量
- NDK Android* 应用移植方法 APP_ABI := armeabi armeabi-v7a x86
- [置顶] Android(安卓)查询距离一个礼拜的记录
- Android的menu(菜单)按钮的使用(by星空武哥)
- android基于注解实现类似spring服务端框架
- 【转】Android中保存Activity的状态
- Android中的Service组件详解
- 实例讲解Android中ContentProvider组件的使用方法
- Android(安卓)自定义 MarqueeView 实现跑马灯 —— 原理篇