android基础学习笔记1

 

数据存储

l  创建数据库的步骤

Ø  通过Helper建立数据库表结构 à onCreate,onu

Ø  调用helper实例,通过get***Database()得到DB对象

Ø  通过DB对象实例调用增删改查方法进行操作

l  SQLiteOpenHelper使用方法

 

Ø  getReadableDatabase()        得到一个可读的db

Ø  getWritableDatabase()        得到一个可写的db

Ø  onCreate(SQLiteDatabase db)     

当数据库第一次创建时调用.程序会检查databases/database.db是否存在.如果不存在则会在要求得到一个databases时调用onCreate()方法,而非new SQLiteOpenHelper()时调用

Ø  onOpen(SQLiteDatabase db)

Ø  onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

Ø  close()

 

Cursor

    可以被看做是一个游标,当数据库查询时会返回一个Cursor.

 

    Cursor cursor = db.query("user", new String[]{"name","id"}, "id=?", new String[]{"2"}, null, null, null);


我们可以通过Cursor来得到我们查询的数据

 

if(cursor != null && cursor.getCount() > 0) {

                  cursor.moveToFirst();

                  int num = cursor.getColumnIndex("id");

                  s = cursor.getString(num);

                  

              }
 


 

l  xml文件的读写

Ø  getSharedPreference  

通过此方法得到一个SharedPreference 对象

Ø  SharedPreferences.Editor    

Editor为SharedPreference的子对象(编辑器) 用于编写

Ø  Editor.commit()             

执行操作

 

 

 

 

 

Service

l  Service       概念

有些操作时间比较长,或目的性的想在后台运行.这就引入了Service这个概念.

Service不是一个独立的进程.亦不是一个独立的线程.默认情况下和主线程在一起.如需要运行费时的操作.应独立另启动线程

 

l  创建及操作Service

Ø  继承Service类实现自己的服务

Ø  在AndridManifest中注册服务

Ø  启动服务startService(

Ø  停止服务stopService()、stopSelf()

l  绑定及使用service的步骤

Ø  继承Service或者IntentService类实现自己的服务

Ø  在AndroidManifest中注册服务

Ø  绑定服务bindService()

Ø  取消绑定服务unbindService()

 

当调用bindService的时候

 

        bindButton.setOnClickListener(new OnClickListener() {

 

           @Override

           public void onClick(View v) {

              // TODO Auto-generated method stub

              Intent intent = new Intent();

              intent.setClass(Service01Activity.this, BindService.class);

              bindService(intent, conn, Context.BIND_AUTO_CREATE);

           }

        

        });

    }
 


会调用bindService的onBind方法  并返回一个Binder 给bindService的参数conn所指的Serviceconnection

 

private  ServiceConnection conn = new  ServiceConnection() {

 

       @Override

       public void onServiceConnected(ComponentName name, IBinder service) {

           // TODO Auto-generated method stub

           MyBinder myBinder = (MyBinder)service;

           BindService bindService = myBinder.getService();

           bindService.myMethod();

           Log.i("Service01Activity", "onServiceConnected");

       }

 

       @Override

       public void onServiceDisconnected(ComponentName name) {

           // TODO Auto-generated method stub

           

       }

    

    };


 

然后由bindService.myMethod();完成实现

 

 

 

l  Service 分类

按照启动方式分类

Ø  Started

1)       startService()来启动

2)       一旦启动,就运行在后台,即便启动他的对象都销毁

3)       通常只启动不返回值

4)       通常网络上传或者下载,操作完成后,自动停止

5)       onStartCommand()

Ø  Bind

了解Service 与 IntentService 区别

 

 

重点:

Service与BoundService区别

Service开发,启动,绑定  

掌握Service与线程使用区别

 

l  Service生命周期     

Service只有在系统资源不足的时候才有可能被系统销毁,值得注意的是:Service如果正在bind状态,很少会被销毁,如果服务运行在前台,几乎不会被销毁.

Ø  onCreate()

Ø  onDestory()

Ø  onStartCommand()

Ø  onBind()                       BoundService如果绑定者都销毁则BoundService生命周期也结束

ContentProvider

         ContentProvider是一套存储访问数据的通道,让你无需了解下面的存储细节实现数据操作及共享.

         无论具体存储是如何做的,存在哪的,但对外提供的模型是统一的

         ContentProvider对象,会在系统初始化的时候自动实例化,无需我们手动去实例化对象

         我们只需要通过ContentProvider取得和操作数据即可

 

l  实现ContentProvider的过程

Ø  定义URI

Ø  实现一个ContentProvider子类

Ø  在AndroidManifest.xml当中进行声明

 

l  常用方法

Ø  query()                 查询

Ø  insert()                 插入

Ø  updata()               更新

Ø  delete()                删除

Ø  getType()             得到数据类型

Ø  onCreate()          创建时的回调函数

 

l  URI

:////

哪条记录

协议标准

ContentProvider提供者地址

哪张表

 

 


 

 

 

 

 

 

 

l  一些通用的定义

CONTENT_URI                                    

自定义的URI,一定要content:// + authority+…….其中authority要在Manifest.xml文件中配置


 


 

CONTENT_TYPE                          访问所有数据 通常为 “vnd.android.cursor.dir/vnd.……”

CONTENT_TYPE_ITEM             访问单个数据 通常为 ”vnd.android.cursor.item/vnd.……”

DATABASE_NAME                      数据库名称

DATABASE_VERSION                 数据库版本

DATABASE_TABLE_NAME        表名

 

BroadcastReceiver

l  如何使用

Ø  继承BroadcastReceiver类

Ø  重载onReceiver()方法

当接受到指定的广播后会构造接受类,然后调用此方法.此方法调用之后则此对象不会被再使用.接受到下一次广播时,会再创建一个此类的实例.

Ø  配置reciever

n  配置AndroidManifest.xml中的

其中为过滤器

如果广播为中定义的action 则会调用MyReceiver.class

 



            

                

                

            

        
 


n  在程序中配置

注册BroadcastReceiver:                   Context.registerReceiver(BroadcastReceiver,filter)

BroadcastReceiver                    自定义的BroadcastReceiver类对象

Filter                                                过滤器

取消注册BroadcastReceiver:         

Context.unregisterReceiver(BroadcastReceiver)

                                                                                                      

IntentFilter filter = new IntentFilter();

filter.addAction(SMS_ACTION);

BroadcastReceiverActivity.this.registerReceiver(sms, filter);
 


 

解除的时候一定是相同对象而不是,如果仅仅是同一个类的2个实例则会报错.

BroadcastReceiverActivity.this.unregisterReceiver(sms);
 


 

注:如果一个BroadcastReceiver用于更新UI,那么通畅会使用这种方法进行注册,在Activity启动的时候注册BroadcastReceiver,在Activity不可见以后取消注册

 

l  BroadcastReceiver接收的信息

Ø  通过Context.sendBroadcast发送

Ø  通过Context.sendOrderedBroadcast发送

 

你可能感兴趣的:(Android)