android 边学边记 2015.10.16
1、Menu.FIRST在reference中描述为:First value for group and item identifier integers.我们可以理解为ID设置的最小数值。
2、setDefaultKeyMode (int mode) 用来设置一个Activity的默认的按键模式,
也就是指这种情况,当Activity中发生了一些按键事件,但是这些事件没有被任何控件Listen到时(截获时),
系统应该如何处理这些按键事件。
mode一共有五种
- DEFAULT_KEYS_DISABLE //直接丢弃,这种情况你把键盘按穿了也不会有系统理你
- DEFAULT_KEYS_DIALER //将键盘事件传入拨号器进行处理
- DEFAULT_KEYS_SHORTCUT //将键盘输入作为当前窗体上注册的快捷键,进行快捷键处理
- DEFAULT_KEYS_SEARCH_LOCAL //将键盘输入作为搜索内容,进行本地搜索,如果本地没有实现自定义搜索,则使用全局搜索
- DEFAULT_KEYS_SEARCH_GLOBAL //将键盘输入作为搜索内容,进行全局搜索
3、intent相关函数解析:
Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。利用Intent所实现的软件复用的粒度是Activity/Service,比函数复用更高一些,另外耦合也更为松散。
settype
使用该函数表示要查找文件的mime类型(如*/*),这个和组件在manifest里定义的相对应,但在源代码里:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public Intent setData(Uri data) { 2 mData = data; 3 mType = null; 4 return this; 5 }
作用是将type设为null。
setdata
该函数的参数是uri,所以要将数据通过该函数传递时,记得要把数据转化为uri,如Uri.fromFile(new File("/mnt/sdcard/"))。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public Intent setType(String type) { 2 mData = null; 3 mType = type; 4 return this; 5 }
要同时设置data和type的话只能用函数setdataandtype了
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public Intent setDataAndType(Uri data, String type) { 2 mData = data; 3 mType = type; 4 return this; 5 }
4、setOnCreateContextMenuListener
所有的View 都可以监听setOnCreateContextMenuListener事件,长按都会弹出上下文菜单
View.setOnCreateContextMenuListener(OnCreateContextMenuListener l)
5、解决:在Activity中为什么要用managedQuery()?
在实际做项目时,有时数据库经常会报cursor not close的warning,有的cursor你可以手动关闭,但是有一些就不可以了,比如当前是个listActivity,
他的adapter是个cursorAdapter,这里的cursor就不能关掉,当然你可以在onDestroy中做关闭的操作,可是我比较习惯把cursor定义为局部变量,不是全局可见的,
这样的话你就不能在onDestroy中关闭了。
后来就查看源代码,发现manageQuery可以为你维护这个cursor。在你退出activity时为你自动关闭
用getContentResolver().query(...)时有时会报cursor not close的warning。