第七章 Activity
1、this.findViewById();oncreate()方法只做初始化。
2、生命周期。
2.1 onCreate()启动activity就会调用。
2.2 锁屏(onpause()--onResume())、返回键(执行onPause())、(home键、来电话;不会被销毁)、finish()(执行onPause()).锁屏回来保留原样,可用使用onStart()和onStop();因为锁屏回来后不会执行这两个方法。前者启动,后者销毁。
2.3 onResume()和onPause();前者启动,后者销毁。
3、启动activity startActivity()、startActivityForResult()。
3.1 intent(.this,.class);intent.("");intent.setAction("");intent.setComponentName(ComponentName cn);intent.setClass( .this,.class )
3.2 启动其他程序的Activity。ComponentName cn = new ComponentName(包名,activity路径),intent.setComponent(cn);
3.3 intent传递数据最大40KB;传递对象,该对象必须序列化。通过请求码或Action;可以判断是谁跳转过来的。通过结果码判断是谁返回过来的。
4、PreferenceActivity 设置界面 xml属性:key很重要。分组、单选列表、复选框。
5、Activity配置文件
5.1 配置四大组件,权限。Application,当前应用。getApplication()返回值是Application;可以得到桌面宽高。
5.2 没有设置orientation,每次更换屏幕都会调用oncreate()方法,重新加载布局如果设置了,则会调用onConfiguratiopnChanged()方法。
5.3 alwaysRetainTaskState(保留状态)和finishOnTaskLaunch(关闭已打开的activity)同时为true;后者占主导。
5.4 launchMode activity的加载模式
第八章 Intent
1、用于activity、service、Broadcast Reciveier之间的跳转。
2、Action、Category、Data、Type(MIME)、Extra
3、intent-filter
4、完全退出应用程序的方法。我们只需要关闭activity、service就行;至于进程是由android自己来控制。在为什么不提供一个退出程序的方法,由android设计理念、设计架构来决定的。一个应用程序访问另一个应用程序的activity时,就不能kill掉应用程序,因为有其他程序的activity。所以没有提供一个专门的退出方法。
(1)加载模式singleTask方式,先建立一个空的activity;在跳转到首页。
(2)setFlags(),system.exit(0)在MAIN Activity中设置,退出进程。android不推荐使用。
(3)利用集合存放activity;finish()中间activity时,注意集合同步。
第九章 service
1、启动方法。两种方式,生命周期各不相同。用bindService()方式启动,他的生命周期随activity的变化。
2、AIDL android接口定义语言,调用远程方法。调用其他程序的方法。java远程方法调用RMI。
3、AIDL代理模式。相同语言编写的程序,才能实现代理。
4、系统服务。电话管理、短信服务、闹钟服务。
5、生命周期。
第十章 Broadcast Receiver
1、发送、接收。发送就一句话,sendBroadcast()、sendOrderedBroadcast().
2、普通广播和有序广播。有序广播通过优先级决定接受者的顺序,可以阻止下一个接受者接受广播,可以把数据传递给下一个接受者。
3、sendSkickyBroadcast()。发送广播后,接受者不一定鞥接受得到,于是先保存下来,保存最后发送广播的内容,覆盖前面发送的广播。调用registerRecevier()方法,调用一次就可以接收一次。其实路由器就是一个典型的粘性广播。
4、系统广播。开机广播、时间改变、电量不足广播等。
第十一章 数据存储
1、SharedPreference、File、SQLite.
2、SharedPreference以键值对的方式来存储数据。写数据要使用到Editor对象,数据存放在data文件夹下面。用于简单的配置,全局的属性等等,如创建快捷方式。
3、File。外部存储卡取数据,路径不要写成固定路径。不同设备不同系统版本,sd卡的路径不一样。
4、不容易变的数据,服务器把数据存放在本地数据库中。提高效率。
5、Cursor 游标首先指向第一行的前面。查询时,查询的列名是传递参数的列号所指向的那一列。列号从0开始。
6、SQLite的工具SQLiteOpenHelper工具类。创建数据库,版本更新。
第十二章 contentProvider
1、contentProvider用来保存和检索数据。可以跨不同应用程序实现数据共享。提供什么方法(增删改查),才能做什么操作。
2、contentResolver,从contentProvider中提取数据。contentProvider又从数据库中提取数据。
3、getContext(),获得上下文对象 。
4、Uri,用来访问contentProvider的地址。content://com.example.tranport/trains/122。
5、系统的contentProvider,联系人、电话。获得contentResolve对象:getContentResolver()。
6、ContentValues类。类似map集合。
7、自定义contentProvider,继承contentProvider类,重写增删改查方法。 利用UriMatcher工具类,注册Uri。实现BaseClumns接口,自己生成ID。
8、ContentUris工具类,附加ID。
9、ContentObserver监听器。监听所有注册了contentProvider。观察者模式:数据与界面实现的一种解耦,观察者观察到被观察者的数据发生了变化并通知观察者,那么观察者的数据随之改变。contentProvider不知道谁取过他的数据,于是contentProvider只管通知观察者我的数据发生了改变,观察者自己去改变数据。