资源描述
自主学习项目报告(一)一 自主学习项目要求1. 收集编写代码过程中碰到的bug,说明bug发生的原因与解决方案 2. 自己在学习过程中总结的知识点 3. 上课内容之外自学的知识点 二 自主学习内容按照上面的要求列出至少10条收集编写代码过程中碰到的bug,说明bug发生的原因与解决方案(1)使用actionProvider时出现的问题:解决方案:换一种import的方式即可,如下所示:12/import android.support.v4.view.ActionProvider;importandroid.view.ActionProvider;(2)Fragment Transactions 和Activity状态丢失Fragment transactions用于在一个Activity上添加、移除或者替换fragment。大多数时候,fragment transaction会在activity的onCreate()方法中执行,也可能在与用户交互中响应。 然而,BUG是当恢复一个activity时,fragment transaction被执行了,应用就可能发生下面的下崩溃:原因:不管何时,如果一个FragmentActivity放在后台,对应FragmentMangerImpl中mStateSaved的flag就会设置为true。这个flag是用来检查是否有state loss。当试图执行一个transaction时,如果这个flag为true,那么就首先会抛出IllegalStateException异常。解决方案:不要在让transactions在其他的Activity生命周期函数提交,如onActivityResult()、onStart()和onResume()自己在学习过程中总结的知识点(3)Android体系结构和Android项目目录Android是基于Linux内核的软件平台和操作系统,采用了软件堆栈的架构,共分为4层:第一层是Linux内核,提供由操作系统内核管理的底层基础功能;第二层是中间件层,由函数库和Android运行时构成;第三层是应用程序框架层,提供了Android平台基本的管理功能和组件重用机制;第四层是应用程序层,提供了一系列核心应用程序。src 源代码目录gen 目录(R.java文件是ADT自动生成,不能手动修改,R.java作用:src中的代码通过R.java访问res中的资源)res 资源目录(/res/layout/目录:界面布局文件,xml;/res/raw不参加编译的资源,不能生成对应文件)AndroidManifest.xml 清单文件(声明应用程序属性信息,声明组件,声明权限,唯一一个组件BroadcastReceiver不需在AndroidManifest中注册)(4)四大组件与其常用界面布局:Activity是app的表示层,作用:与用户交互,显示信息;Service用于无用户界面,但需长时间在后台运行的应用;BroadcastReceiver监听系统广播、其它应用程序广播、其它组件广播,并响应广播消息;ContentProvider用于进程间共享数据。线性布局-LinearLayout表格布局-TableLayout相对布局-RelativeLayout帧布局-FrameLayout网格布局-GridLayout 绝对布局-AbsoluteLayout(5)Activity的两种启动方式、四种状态、四种模式直接启动 :startActivity(Intent intent)带返回值启动:startActivityForResult(Intent intent, int requestCode)onCreate()、onStart()、onRestart()、onResume()、onPause()、onStop()、onDestroy()Activity4种状态:运行状态:Activity位于前台,用户可见,获得焦点暂停状态: Activity可见,但被其它Activity覆盖,没有获得焦点停止状态:不可见,失去焦点销毁状态:Activity完毕,或所在进程被完毕Activity有4种启动模式,分别为standard、singleTop、singleTask和singleInstance(6)Intent的启动方式与其七大属性显式Intent(指定启动名称):明确指出目标组件名称的Intent告诉Android系统,我要“找谁”,Android平台将目标组件启动起来常用于APP内部组件间启动隐式Intent(满足条件):不指名目标组件名称的Intent告诉Android系统,我要“干什么”,Android平台将Intent请求与IntentFilter过滤器做比较,找出匹配Intent请求的组件,将其启动起来常用于不同APP之间传递消息Intent七大属性:Component:明确指定目标组件名称 Action:动作Category:类别 Data:向Action属性提供操作的数据Type:指定Data属性指定Uri对应的MIME类型Extra:携带数据Flag:控制旗标IntentFilter过滤器:一个隐式Intent与IntentFilter比较时,必须通过Action、Category和Data三个方面的检查,任一个不匹配,都不能启动该组件如果一个组件没有定义,只能响应显式Intent请求 Intent添加Action只能一条(setAction) Intent-Filter可以多条(addAction)(7)数据存储3种方式与其SQLite数据库6个函数简单存储、文件存储、数据库存储execSQL()、rawQuery()、insert()、delete()、update()、query()(8)ContentProvider作用与其配置方式作用:应用程序间共享数据配置注册ContentProvider:AndroidManifest.xml域名:authorities(9)Service的6个回调函数与其生命周期:onCreate()、onStartCommand()、onDestroy()、onBind()、onUnbind()、onRebind()startService()、bindService()方式启动的Service,同一类的Service只存在一个对象。Service与Activity的区别:(1)Service一直在后台运行,没有用户界面,绝不会到前台来;(2)Activity在前台运行,有用户界面,负责与用户交互。Service两种启动方式:startService()和bindService(),Intent必须显示启动Service。startService() 对应的停止方式stopService(),bindService() 对应的停止方式unBindService()。图1 Service两种方式生命周期图(10)发送广播的方式、支持的4种网络编程API、数据解析方式、sendBroadcast()、sendOrderedBroadcast()、sendStickyBroadcast()。BroadcastReceiver两种注册方式:静态注册、动态注册。静态注册在AndroidManifest.xml中注册,动态注册在代码中注册,取消注册该广播接收器调用Context的unregisterReceiver(BroadcastReceiver receiver)。Android支持的4种网络编程API:SocketURLConnection URLConnection, Client (Apache)两种数据解析方式:XML和JSONGPS定位 Android 网络定位:基站 Wi-FiIP地址三 分析与小结学习心得体会Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C+高级编程才能深入的涉与AndroidFramework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。通过Android的学习,深刻了解了应用程序的基本组件、界面布局的基础,结合Internet实现通讯录的设计和发送短信实例对Android系统平台开发有了进一步的学习。我们在毕业前,又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可以根据我们自己的需要设计一些小的程序。总之,在这门课程学习中,我获得了很多东西,提高了自己的编程技巧和编程方法,并且认识了Android应用程序的开发,以与加深了对Java的认识。虽然我对于它的掌握还不那么的深,学习的也还不足,但我还是会一直坚持的学习下去,因为它的奇妙,因为我们的生活需要它,它的开发是永无止境的,它的学习也将是永无止境的。6 / 6
展开阅读全文