- SharedPreferences sp = getSharedPreferences(“data”,MODE_PRIVATE);//data表示文件名
- Editor editor = sp.edit(); //获取编辑器 - editor.putString(“name”, “传智播客”); //存入String类型数据 - editor.putInt(“age”, 8); //存入int类型数据 - editor.commit(); //提交修改
QQ登录案例
第五章 SQLite数据库
1、教学要求
学会SQLite数据库的基本操作。 学会使用sqlite3工具操作数据库。 学会使用ListView控件展示数据。
2、SQLite数据库简介
?
SQLite是一个轻量级数据库,第一个版本诞生于2000年5月。它最初是为
嵌入式设计的,占用资源非常低,在内存中只需要占用几百KB的存储空间。 ? SQLite是遵守ACID关联式的数据库管理系统。ACID是指数据库事务正确执
行的基本要素,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 ? SQLite没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放
在其他平台中使用。并且支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)五种数据类型。
3、SQLite的操作
SQLiteOpenHelper类常用方法
SQLiteDatabase类常用方法
Cursor类常用方法
SQLite事务操作
事务执行完成后一定要endTransaction方法关闭事务,当执行到该方法时,判断是否有执行成功标记,如果有,则提交数据,否则回滚数据。最后关闭事务,如果不关闭,则会在超时自动关闭,这种方式会降低数据库并发效率,因此,通常情况下,该方法在finally中执行。
开始数据库事务、关闭事务、关闭数据库的方法。 自学sqlite3
在Android SDK的platform-tools目录下提供了一\工具,它是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口在有些时候,开发者利用该工具来査询、 管理数据库。 * :\\Android\\sdk\\platform-tools\\ sqlite3
如何在命令行通过sqlite3工具访问数据库**,并查询表*中的数据。
4、数据的展示—ListView
常见属性
BaseAdapter
即基本的适配器。它实际上就是一个抽象类,该类拥有四个抽象方法。在Android开发中,就是根据这几个抽象方法来对ListView进行数据适配的。
SimpleAdapter
SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法,分别是getCount()、getItem()、getItemId()、getView()方法。
ArrayAdapter
ArrayAdapter也继承自BaseAdapter,与SimpleAdapter相同。ArrayAdapter通常用于适配TextView控件,例如Android系统中的设置菜单(Setting)。
SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法,分别是getCount()、
getItem()、getItemId()、getView()方法(表5-5)。 因此,开发者只需要在创建SimpleAdapter实例时,在构造方法中传递相应参数即可。SimpleAdapter构造方法如:
Public SimpleAdapter(Context context, List< ? extends Map
Context context:getView()方法中需要用到Context将布局转换为View对象。 List Extends Map
Int resource: Item布局的资源ID。 String [] from: Map集合里的Key。 Int [] to: Item布局相应的控件id. ListView的优化
1) 复用ConvertView 2) 使用ViewHolder类
第六章 广播接收者
1、教学要求
学会自定义广播。
掌握有序广播和无序广播的使用。
掌握常用广播接收者(开机启动,短信接收)的使用。
2、广播接受者的创建与注册
要使用广播接收者接收其他应用程序发出的广播,先要在本应用中创建广播接收者并进行注册。注册广播有两种方式,常驻型广播和非常驻型广播。
1、创建广播接收者
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { } } //要对监听到的广播进行处理,需要创建一个继承自BroadcastReceiver 的类,并重写onReceive方法。当监听到有广播发出时,就会调用onReceive方法,在onReceive()中事件处理即可。
(3)自定义广播的接收与发送
(4)有序广播与无序广播的接收
sendOrderedBroadcast()方法,该方法参数的作用
(5)广播的拦截
有序广播的拦截abortBroadcast( ) (6)定向广播
第七章 服务
1、教学要求
掌握服务的生命周期。 掌握服务的两种启动方式。
学会使用服务与Activity进行通信。
学会调用其他应用的服务,实现跨进程通信。
2、什么是服务、服务的创建
服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。
服务的创建方式与创建Activity类似,只需要继承Service类,然后在清单文件中注册即可。
1、创建服务
public class MyService extends Service { public IBinder onBind(Intent arg0) { return null; } }
上述代码还没有实现具体的功能。值得注意的是,onBind()是Service类中唯一的抽象方法,所以必须要在子类中实现。
由于服务是Android的四大组件之一,因此,需要再清单文件中进行注册,注册代码如下:
在清单文件中配置
至此,整个服务便创建完成了,从上述过程看,服务的创建非常简单,需要注意的是,一定不要忘记在清单文件中对服务进行注册,否则服务不会生效。
3、服务的生命周期
与其他组件不同的是,Service不能自己主动运行,需要调用相应的方法来启动。 启动服务的方法是Context.startService()和Context.bindService()。使用不同的方法启动服务,服务的生命周期也会不同。
(1)startService方式开启服务的生命周期 当其他应用调用startService()方法时,服务会先执行onCreate(),onStartCommand()方法,此时,服务处于运行状态,直到自身调用stopSelf()方法或者其他组件调用stopService()方法时服务停止,最终被系统销毁。
这种方式开启的服务,服务会长期的在后台运行,并且服务的状态与开启者的状态没有关系。
Context.startService()方式启动
Context.startService()方式的生命周期: 启动时,startService –> onCreate() –> onStart(),停止时,stopService–> onDestroy()如果调用者直接退出而没有停止Service,则Service 会一直在后台运行。
Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。
采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法.
(2)bindService方式开启服务的生命周期 当其他组件调用bindService()启动服务时,服务被创建,接着客户端通过Ibinder接口与服务通信。客户端通过unbindService()方法关闭连接,多个客户端能绑定在同一服务上,并且当他们都解绑时,系统将直接销毁服务(服务不需要被停止)。随着服务的启动,会执行onCreate() ? onBind()方法,服务处于绑定状态, 客户端通过unbindService()方法关闭连接,解除绑定时,系统将直接销毁服务,服务不需要被停止。
这种方式开启的服务与开启者的状态有关,当调用者销毁了,服务也会被销毁。