android框架及应用开发介绍信息应用开发部2009年9月目录Android的发展Android的发展初探Android框架如何开发一个android应用如何开发一个widget如何开发一个widget2Android发展路线?2008年102009年4月27日,androidandroid2.0,代号donut2008年9月日年月21日,android开源androidSDK1.5发布号donut,支持CDMA,2007年月23日,HTCG1上市,源多点触摸,文本语音引擎11月,Android发布上市,androidSDK1.0发布引擎,…d发布发布3Android手机一览华为pulseLGEtna4目录Android的发展Android的发展初探Android框架如何开发一个android应用如何开发一个widget如何开发一个widget5Android框架JAVAJNIC/汇编6Android应用程序构成ActivityServiceIntentBroadcastContentBroadcastReceiverContentProvider7ActivityActivity8Activity¾Avisualuserinterface¾通过i管理UI¾通过view管理UI¾每一个有用户界面的应用至少包含一个每个有用户界面的应用少含个activity¾一个应用可以有多个activity其中一个作为¾一个应用可以有多个activity,其中一个作为mainactivity用于启动显示¾Activity通过startActivity或startActivityForResult启动另外的activitystartActivityForResult启动另外的activity9Activity——View¾通过View管理UI¾View绘制UI与处理UIevent¾View可通过xml描述定义,也可在代码中生成。¾setContentView(R.layout.main)¾Android建议将UI设计和逻辑分离¾Android建议将UI设计和逻辑分离¾androidUI设计类似swing,通过布局(layout)组织UI组件10Activity生命周期¾Activity通过onCreate被创建建¾当一个activity失去焦点,该activity将进入pause该activity将进入pause状态,系统在内存不足时会将其终止时会将其终止¾当一个activity被另一个activity覆盖该activityactivity覆盖,该activity将进入stop状态,系统在需要内存的时候会将在需要内存的时候会将其终止11IntentIntent12Intent(1)¾类似于消息、事件通知¾Itt构成titdt¾Intent构成:action、category、data¾Activity、Service、broadcastreceiver之间的桥梁activityserviceIntentactivityserviceIntentBroadcastreceiverBroadcastreceiver13Intent(2)¾两类intent:z显式:指定具体的目标组件处理–startActivity(newIntent(ActivityLifecycle.this,AnotherActivity.class));z隐式:由系统接受并决定如何处理–startActivity(newIntent(Intent.ACTION_DIAL));¾在AndroidManifest.xml中定义activity、service、broadcastreceiver接受的intent14Intent(3)¾Intentfilter:action、category、dataComponentnameactivityframeworkActionDatacomponentcyserviceeoCategoryintentcopoeeceBroadcastrir15intentreceiver实例action--DIALdata--tel:02038639592action--VIEWdata--¾没有UI,启动之后一直运行于后台¾例子音乐播放器¾例子:音乐播放器¾与应用程序的其他模块(例如activity)一同y运行于主线程中¾通过startService或bindService创建Service¾通过startService或bindService创建Service¾通过stopService或stopSelf终止Service¾一般的,在activity中启动和终止service18Service生命周期onCreateContext.startService()Context.bindService()onStartonStartCSi()Context.stopService()Serivce.stopSelf()onDestroy19ContentProviderContentProvider20何为Contentprovider¾什么是Contentprovider?zContentProvider是Android应用zContentProvider是Android应用程序的四大组成部分之一是中的跨应用访问数据机z是android中的跨应用访问数据机制¾为何需要contentprovider?zAndroid中每一个app的资源是私zAndroid中每个app的资源是私有的zapp通过contentprovider和其他zapp通过contentprovider和其他app共享私有数据21如何使用contentprovider¾通过contentresolver访问¾CtttCttRl()¾Context.getContentResolver()appappappContentResolverContentResolverContentResolverContentProviderAContentProviderB22如何使用contentprovider(续)¾URI定位资源zcontent://contacts/peoplezcontent://contacts/peoplezcontent://call_log¾类似关系数据库的访问方式¾类似关系数据库的访问方式delete(Uriurl,Stringwhere,String[]selectionArgs)insert(Uriurl,ContentValuesvalues)query(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)update(Uriuri,ContentValuesvalues,Stringwhere,¾以二维数据表的格式暴露数据,缺省都包含_id字段String[]selectionArgs)23定义自己的contentprovider在AndroidManifest.xml中声明一个providerprovider/providerprovider……/provider创建MPid类继承自CPid创建MyProvider类,继承自ContentProvider。定义该provider提供的数据集的URI和字段名在MyProvider中实现ContentProvider的6个abstractmethod:query,insert,update,abstractmethod:query,insert,update,delete,getType,onCreate在其他app中使用ContentResolver通过URI访问MyProvider提供的数据24Android的存储¾一般的,应用程序的数据(包括文件)都是私有的私有的¾四种持久存储方式zPreferences——类似properties,xml文件zFileszFileszDatabase——SQLitezNtkzNetwork25BroadcastReceiverBroadcastReceiver26Broadcastreceiver¾接收和处理android的广播消息¾Adid的广播机制¾Android的广播机制z系统事件——例如变换时区、电量低等z应用程序发出广播消息:sendBroadCastz广播消息:intentz广播消息:intentandroidBroadcastreceiverSendbroadcastappreceiver27创建BroadcastReceiver¾实现一个BroadcastReceiverzpublicclassMyAndroidReceiverextendsBroadcastReceiverzoverrideonReceive(Contextcontext,IntentsIntents)¾注册BroadcastReceiverz在AdidMiftl文件当中进行注册z在AndroidManifest.xml文件当中进行注册receiverAndroid:name=“MyAndroidReceiverIntents-filteractionAndroid:name=”com.eoeAndroid.action.NEW_BROADCAST”//Intents-filter/receiverz在代码当中直接进行注册IntentsFilterfilter=newIntentsFilter(NEWBROADCAST);(_);MyAndroidReceiverMyAndroidReceiver=newMyAndroidReceiver();registerReceiver(MyAndroidReceiver,filter);28Broadcastreceiver生命周期CreateObjtonReceiveDestroyObjectonReceiveobjectBroadcastreceiver对象在onReceive返回后被销毁Ri中不适合处理异步过程例如弹出对话框onReceive中不适合处理异步过程。例如弹出对话框与用户交互,可使用消息栏替代。29Android权限控制¾在AndroidManifest.xml中描述一个app的权限¾例如:¾例如:manifestxmlns:android==com.android.app.myappuses-permissionandroid:name=android.permission.RECEIVE_SMS/uses-persissionandroid:name=“android.permission.INTENET”//manifest¾权限举例(参考android.Manifest.permission)权限名称权限描述权限名称权限描述接收短信android.permission.RECEIVE_SMS拨打电话android.permission.CALL_PHONE系统启动完毕通知android.permission.RECEIVE_BOOT_COMPLETED读取联系人信息android.permission.READ_CONTACTS30修改联系人信息android.permission.WRITE_CONTACTS目录Android的发展Android的发展初探Android框架如何开发一个android应用如何开发一个widget如何开发一个widget31工欲善其事,必先利其器¾AndroidSDKz昀新版本androidsdk15r2z昀新版本:androi