Activity ,Service,Content Provider,BroadcastReceiver, Intent
SQLite,Http,Fragement,Handle
1,Activity:
onCreate ——> onStart——> onResume——> onPause()——> onStop——> onDestroy
2,Service:
1) onCreate——> onStart(Intent intent,int startId)——> onDestroy
startService(serviceIntent) /stopService(serviceIntent)
2)如果希望启动服务的Activity关闭后Service自动关闭,就需要讲Activity与Service绑定。
public boolean bindService(Intent service,ServiceConnection conn ,int flags) //flags一般为Context.BIND_AUTO_CREATE
2)Handler
在主线程当中是不允许通过子线程去更新主UI的 ,因为这会导致主UI卡死。也就是说,Android主线程是线程不安全的,更新UI只能在主线程中更新。
解决方法:Handler——>主要接受子线程发送的数据, 并用此数据配合主线程更新UI.
由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据。这个时候,Handler就承担着接受子线程传过来的(子线程用sendMessage()方法传递),Message对象(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。
handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程)。
它有两个作用: (1): 安排消息或Runnable 在某个主线程中某个地方执行, (2)安排一个动作在不同的线程中执行。
Handler中分发消息的一些方法
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)
以上post类方法允许你排列一个Runnable对象到主线程队列中,
sendMessage类方法, 允许你安排一个带数据的Message对象到队列中,等待更新.
3,Content Provider
使用ContentProvider,应用程序可以实现数据共享
1)ContentProvider简介
当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。
getContentResolver.query(ContactsContract.Contacts.CONTENT_URI,projection,selection,null,null)
四个参数分别为:
columns, // 要返回的数据字段
null, // WHERE子句
null, // WHERE 子句的参数
null // Order-by子句
);
4,先 Layout :onInterceptTouchEvent false
view: onTouchEvent true
http://blog.csdn.net/android_tutor/article/details/7193090
http://blog.csdn.net/lvxiangan/article/details/9309927
5,今天遇到一个问题,困扰好久(20150105)
scrollview嵌套listview 只显示一个item的问题。
解决方法:
http://www.apkbus.com/android-11540-1.html
如果listview的点击事件失效的话,注意看是否是listview item的clickable=“true” 需要拿掉
******************************************************
补充:
1,Android配置:
1) java -version
2)jdk1.6下载地址:
http://support.apple.com/kb/DL1572?viewlocale=zh_CN&locale=zh_CN
3) 安装eclipse svn插件 :
team ——>更新,提交等
2,xml 属性
android:fitsSystemWindows="true"设置布局调整时是否考虑系统窗口(如状态栏)
android:layout_marginLeft指该控件距离边父控件的边距,
android:paddingLeft指该控件内部内容,如文本距离该控件的边距。
android:ems = "10" 设置TextView或者Edittext的宽度为10个字符的宽度。当设置该属性后,控件显示的长度就为10个字符的长度,超出的部分将不显示。
<requestfocus />用于指定屏幕内的焦点View
3,快捷键
alt +/ 提示信息
ctrl + o 函数层次
选中某个词组,ctrl +k 向下查找,ctrl +shift+ K向上查找
ctrl + T 层次
ctrl +shift + F 格式化
ctrl +1 快捷修复 F2+ enter 选择快捷修复的第一个
不允许switch嵌套
//Android
高手速成android开源项目【View篇】
http://www.xuebuyuan.com/2192689.html