




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android应用开发AndroidAndroidAndroid环境配置和开发Android应用程序构成如何开发一个例子目录Android应用开发AndroidAndroid平台架构平台架构JNIJAVAC/汇编Android应用开发简介 LinuxLinux核心核心:Android依赖来提供核心的服务,例如存储管理、进程(Process)管理等 Android RuntimeAndroid Runtime:Java语言层级的Virtual Machine LibrariesLibraries:Android里已经提供的C/C+组件。例如,SQLite、OpenGL 3D等。 应用应用框架框架
2、(Application Framework,)(Application Framework,):这是结合Applications和Libraries的主架构,让Libraries組件能不断地为Applications所重复使用 应用程序应用程序(Applications)(Applications):根据用户的期望而将AF的组件及Libraries组件组合而成的服务。Android应用开发用汉堡比喻用汉堡比喻Android 平台架构平台架构Android应用开发Android环境配置和开发Android平台架构Android应用程序构成如何开发一个例子目录Android应用开发如何安装 An
3、droid SDK 和Eclipse 插件所需开发环境所需开发环境:JDK 5 或 JDK 6 (仅有JRE不够) Eclipse 3.5 (galileo)下载下载ADT 的的Eclipse 插件插件 安装安装 Eclipse 插件插件 (ADT)启动 Eclipse,选择 Help Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”, 然后点击Archive.,浏览和选择已经下载的ADT插件插件压缩文件。 点击 OK.。返回可用软件的视图,你会看到这个插件,然后选择Developer Tools (会选中下面的“Android
4、Developer Tools”和 “Android Editors“),点击 Next,最后重启 Eclipse。下载下载Android SDK:下载完SDK后,把.zip文件解压到你电脑上合适位置。启动 Eclipse,选择window-preferences,在打开的视图左边点击android,在右边的SDK Location中选择Android SDK所在位置。Android应用开发开发第一个Android应用打开Eclipse,新建项目(点击FileNewProject),在项目列表中展开Android目录,选择Android Project,如下图:Android应用开发开发第一个
5、Android应用Android应用开发开发第一个Android应用点击”finish”即可完成项目的创建,创建后的项目已经是一个可运行的Android应用,我们可以通过下面方式运行此应用:点击工具栏上手机形状的虚拟设备管理器(简称“AVD“),如下:Android应用开发开发第一个Android应用在打开的虚拟设备管理器中创建一个虚拟手机:Android应用开发开发第一个Android应用在项目上右键点击run as Android application,如下图:Android应用开发Android应用程序架构src/ java原代码存放目录原代码存放目录gen/ 自动生成目录自动生成目录
6、gen 目录中存放所有由目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是文件。开发工具自动生成的文件。目录中最重要的就是文件。 这个文件这个文件由由Android开发工具自动产生的。开发工具自动产生的。Android开发工具会自动根据你放入开发工具会自动根据你放入res目录的目录的xml界面文界面文件、图标与常量,同步更新修改文件。正因为文件是由开发工具自动生成的,所以我们应避件、图标与常量,同步更新修改文件。正因为文件是由开发工具自动生成的,所以我们应避免手工修改。在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的免手工修改。在应用中起到了字典的作用,它包
7、含了界面、图标、常量等各种资源的id,通,通过,应用可以很方便地找到对应资源。另外编绎器也会检查列表中的资源是否被使用到,没过,应用可以很方便地找到对应资源。另外编绎器也会检查列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。res/ 资源资源(Resource)目录目录在这个目录中我们可以存放应用使用到的各种资源,如在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看界面文件,图片或数据。具体请看ppt下方备注栏。下方备注栏。AndroidMani
8、fest.xml 功能清单文件功能清单文件 这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如如 服务、互联网服务、短信服务、服务、互联网服务、短信服务、GPS服务等等服务等等)。另外当你新添加一个。另外当你新添加一个Activity的时候,也需的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此要在这个文件中进行相应配置,只有配置好后,才能调用此Aperties 项目环境信息,一般是不需要修改此文件项目环境信息,一般是不需要修改此
9、文件Android应用开发目录Android环境配置和开发Android平台架构Android应用程序构成如何开发一个例子Android应用开发Android应用程序构成ActivityServiceBroadcast ReceiverContent ProviderIntentAndroid应用开发ActivityA visual user interface通过view管理UI每一个有用户界面的应用至少包含一个activity一个应用可以有多个activity,其中一个作为main activity用于启动显示Activity通过startActivity或startActivityFor
10、Result启动另外的activityAndroid应用开发Activity生命周期 Activity通过onCreate被创建 当一个activity失去焦点,该activity将进入pause状态,系统在内存不足时会将其终止 当一个activity被另一个activity覆盖,该activity将进入stop状态,系统在需要内存的时候会将其终止Android应用开发Intent类似于消息、事件通知Intent构成:action、category、dataActivity、Service、broadcast receiver之间的桥梁IntentactivityserviceBroadcas
11、t receiverAndroid应用开发Intent 两类intent: 显式:指定具体的目标组件处理 startActivity(new Intent(ActivityLifecycle.this, AnotherActivity.class); 隐式:由系统接受并决定如何处理 startActivity(new Intent(Intent.ACTION_DIAL); 在中定义activity、service、broadcast receiver接受的intentAndroid应用开发IntentIntent filter: action、category、dataframeworkCom
12、ponent nameActionDataCategoryintentcomponentactivityserviceBroadcast receiverAndroid应用开发实例action - DIALdata - tel:action - VIEWdata - Android应用开发Service没有UI,启动之后一直运行于后台例子:音乐播放器与应用程序的其他模块(例如activity)一同运行于主线程中通过startService或bindService创建Service通过stopService或stopSelf终止Service一般的,在activity中启动和终止serviceA
13、ndroid应用开发Service生命周期Context.stopService()Serivce.stopSelf()Context.startService()Context.bindService()Android应用开发服务服务-Service-ServiceAndroid中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务的开发比较简单,如下:第一步:继承Service类public class SMSService extends Service Android应用开发服务服务-Service-
14、Service第二步:在文件中的节点里对服务进行配置:服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。如果打算采用Context.startService()Context.startService()方法启动服务方法启动服务,在服务未被创建时,系
15、统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。Android应用开发服务服务-Service-Service如果打算采用Context.bindService()Context.bindService()方法启动服务方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,
16、接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-onDestroy()方法。Android应用开发服务服务-Service-Service服务常用生命周期回调
17、方法如下:onCreate() 该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,服务也只被创建一次。onDestroy()该方法在服务被终止时调用。l 与采用Context.startService()方法启动服务有关的生命周期方法onStart() 只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用startService()方法尽管不会多次创建服务,但onStart() 方法会被多次调用。l 与采用Context.bindService()方法启
18、动服务有关的生命周期方法onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用。Android应用开发采用采用startService()startService()启动服务启动服务采用Context.startService()方法启动服务的代码如下:public class H
19、elloActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . Button button =(Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent(HelloActivity.this, SMSService.class);startServi
20、ce(intent);); Android应用开发采用采用bindService()()启动服务启动服务采用Context.startService()方法启动服务的代码如下:public class HelloActivity extends Activity ServiceConnection conn = new ServiceConnection() public void onServiceConnected(ComponentName name, IBinder service) public void onServiceDisconnected(ComponentName nam
21、e) ; Override public void onCreate(Bundle savedInstanceState) Button button =(Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent(HelloActivity.this, SMSService.class);bindService(intent, conn, Context.BIN
22、D_AUTO_CREATE);/unbindService(conn);/解除绑定); Android应用开发何为Content provider什么是Content provider?Content Provider 是Android应用程序的四大组成部分之一是android中的跨应用访问数据机制为何需要content provider?Android中每一个app的资源是私有的app通过content provider和其他app共享私有数据Android应用开发如何使用content provider通过content resolver访问Context.getContentResolv
23、er()appContentResolverContentProvider AContentProvider BContentResolverContentResolverappappAndroid应用开发如何使用content provider URI定位资源 content:/contacts/people 类似关系数据库的访问方式 以二维数据表的格式暴露数据,缺省都包含_id字段delete(Uri url, String where, String selectionArgs)insert(Uri url, ContentValues values)query(Uri uri, Str
24、ing projection, String selection, String selectionArgs, String sortOrder)update(Uri uri, ContentValues values, String where, String selectionArgs)Android应用开发定义自己的content providerAndroid应用开发Android的存储一般的,应用程序的数据(包括文件)都是私有的四种持久存储方式Preferences类似properties,xml文件FilesDatabaseSQLiteNetworkAndroid应用开发Broad
25、cast receiver接收和处理android的广播消息Android的广播机制系统事件例如变换时区、电量低等应用程序发出广播消息:sendBroadCast广播消息:intentandroidappBroadcast receiverSend Send broadcastbroadcastAndroid应用开发创建Broadcast Receiver 实现一个BroadcastReceiver public class MyAndroidReceiver extends BroadcastReceiver override onReceive(Context context, Inten
26、ts Intents) 注册BroadcastReceiver 在文件当中进行注册 在代码当中直接进行注册 IntentsFilter filter = new IntentsFilter(NEW_BROADCAST );MyAndroidReceiver MyAndroidReceiver = new MyAndroidReceiver();registerReceiver(MyAndroidReceiver , filter);Android应用开发Broadcast receiver生命周期Broadcast receiver对象在onReceive返回后被销毁onReceive中不适合
27、处理异步过程。例如弹出对话框与用户交互,可使用消息栏替代。Android应用开发Android权限控制 在中描述一个app的权限 例如: 权限举例(参考android. Manifest.permission) Manifest.permission)权限名称权限名称权限描述权限描述接收短信android.permission.RECEIVE_SMS拨打电话android.permission.CALL_PHONE系统启动完毕通知android.permission.RECEIVE_BOOT_COMPLETED读取联系人信息android.permission.READ_CONTACTS修改联
28、系人信息android.permission.WRITE_CONTACTSAndroid应用开发目录Android环境配置和开发Android平台架构Android应用程序构成如何开发一个例子Android应用开发从从InternetInternet获取数据获取数据利用HttpURLConnection对象,我们可以从网络中获取网页数据.URL url = new URL();HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(6* 1000);/设置连接超时if (c
29、onn.getResponseCode() != 200) throw new RuntimeException(请求url失败);InputStream is = conn.getInputStream();/得到网络返回的输入流String result = readData(is, GBK);conn.disconnect();System.out.println(result);/第一个参数为输入流,第二个参数为字符集编码public static String readData(InputStream inSream, String charsetName) throws Excep
30、tionByteArrayOutputStream outStream = new ByteArrayOutputStream();byte buffer = new byte1024;int len = -1;while( (len = inSream.read(buffer) != -1 )outStream.write(buffer, 0, len);byte data = outStream.toByteArray();outStream.close();inSream.close();return new String(data, charsetName);Android应用开发从从
31、InternetInternet获取数据获取数据利用HttpURLConnection对象,我们可以从网络中获取文件数据.URL url = new URL();HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(6* 1000);if (conn.getResponseCode() != 200) throw new RuntimeException(请求url失败);InputStream is = conn.getInputStream();readAs, Img
32、269812337.jpg); public static void readAs inSream, ) throws Exception outStream = new (file);byte buffer = new byte1024;int len = -1;while( (len = inSream.read(buffer) != -1 )outStream.write(buffer, 0, len); outStream.close();inSream.close();Android应用开发向向InternetInternet发送请求参数发送请求参数利用HttpURLConnecti
33、on对象,我们可以向网络发送请求参数.String requestUrl = ;Map requestParams = new HashMap();requestParams.put(age, 12);requestParams.put(name, 中国); StringBuilder params = new StringBuilder();for(Map.Entry entry : requestParams.entrySet()params.append(entry.getKey();params.append(=);params.append(URLEncoder.encode(ent
34、ry.getValue(), UTF-8);params.append(&);if (params.length() 0) params.deleteCharAt(params.length() - 1);byte data = params.toString().getBytes();URL realUrl = new URL(requestUrl);HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();Android应用开发向向InternetInternet发送请求参数发送请求参数conn.se
35、tDoOutput(true);/发送POST请求必须设置允许输出conn.setUseCaches(false);/不使用Cacheconn.setRequestMethod(POST); conn.setRequestProperty(Connection, Keep-Alive);/维持长连接conn.setRequestProperty(Charset, UTF-8);conn.setRequestProperty(Content-Length, String.valueOf(data.length);conn.setRequestProperty(Content-Type,application/x-);DataOutputStream outStream = new DataOutputStream(conn.getOutputStream();outStream.write(data);outStream.flush();if( conn.getResponseCode() = 200 ) String result = readAsString(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厨房器具用刀具及刀片企业县域市场拓展与下沉战略研究报告
- 土壤耕整机械企业数字化转型与智慧升级战略研究报告
- 建设2x25000千伏安硅铁电炉余热发电项目可行性研究报告写作模板-备案审批
- 股权质押合同范本1
- 2024-2025项目部安全培训考试试题及答案全面
- 25年公司管理人员安全培训考试试题及答案能力提升
- 志愿服务文化内涵挖掘-全面剖析
- 跨文化设计思维与策略-全面剖析
- 跨平台数据访问控制-全面剖析
- 香丹注射液对神经系统疾病的治疗效果-全面剖析
- 人工智能对经济的影响
- 棒垒球课教学大纲
- 医学CVVH原理和护理
- 《人体内物质的运输》血液循环共23张
- 工程总承包项目风险管理
- 2023年韶关市始兴县事业单位考试试题真题及答案
- 大班语言优质课课件PPT《青蛙歌》
- 预防校园欺凌法治知识竞答题库及答案
- 意大利(百得)TBG 系列燃烧机说明书
- 污水处理设施运维服务投标方案(技术方案)
- 项目小组成员职责表
评论
0/150
提交评论