聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 安卓学习心得体会(精选多篇)

安卓学习心得体会(精选多篇)

时间:2020-07-14 09:29:34    下载该word文档

安卓学习心得体会(精选多篇)

第一篇:安卓学习心得 android学习心得 -----0计算机应用(1)张峰 1.关于activity 1. 在一个activity中使用多个vievc中的control它负责管理ui和接受事件(包括用户的输入),虽然说一个activity通常对应一个屏幕,但事实上,我们是可以只用一个activity管理多个不同的viel。 除了一个“hello中国”以外,增加一个按钮可以返回前一个界面。然后,在代码中我们要为hellotmand和setviemand,分别处理一下在不同界面时,从资源里加载组件并为组件绑定一个事件处理器最后,我们需要在oncreate的时候,也就是启动后的main界面上设置一下按钮事件处理器。 2. 还是回到正道上,多个activity之间的跳转 android中提供一个叫intent的类来实现屏幕之间的跳转,按文档的说法,似乎他们也建议采用这种方法,intent的用法比较复杂,现在我先看看它最简单的用法。 这里的跳转功能用intent来操作,它的最简单用法就是用函数setclass()设置跳转前后两个activity类的实例,然后调用activity自己的startactivity(intent)即可。最后一句finish()表示将当前activity关掉(如果不关掉会如何你可以自己试一下看效果,事实上有时我们是不需要关掉当前activity的)。 然后,我们同样弄一个activity类hellothreeb,代码与前面的差不多,只是将setclass的两个参数反一下,这样就可以简单地实现在两个activity界面中来回切换的功能了。 2.关于 intent的使用 intent分为两大类,显性的(explicit )和隐性的(implicit)。一般来说,intent要定位事件的目的地,无外乎需要以下几个信息: 1.种类(category),比如我们常见的 launcher_category 就是表示这是一类应用程序。 2.类型(type),在前面的例子中没用过,表示数据的类型,这是隐性intent定位目标的重要依据。 3.组件(component),前面的例子中用的是setclass,不过也可以用setcomponent来设置intent跳转的前后两个类实例。 4.附加数据(extras),在contenturi之外还可以附加一些信息,它是bundle类型的对象。 其实,如果是在一个应用内部,这种隐性的intent实在有点别扭,个人觉得,这种松藕合的实现方法,只适用于那些较大的系统或者多个不同的应用之间的调用,可手机上又有什么“较大”的系统呢无非是可以与不同来源的多个应用之间方便地互操作而已,那么会是什么样的场景呢比如,给qq好友发送gmail邮件,用googlemap查找qq好友所在的位置看上去挺不错的。 关于这个contentprovider,其实还有话说,它主要是的那些看似数据库操作的方法我们都没真正去实现呢。不过今天就到这里了,等下回再去研究吧。 3.关于listactivity 准备一个list对象并借助adapter就可以构造出一个列表。重载onlistitemclick方法可以响应选择事件,利用第一个参数可以访问到这个listvieainb描述一下这个列表窗口。 这里需要注意的是那个listviel文件来描述这个布局,相当简单。 从arrayadapter上溯到baseadapter,发现还有几个同源的adapter也应该可以使用,象simpleadapter和cursoradapter,还是做个例子来实验一下吧。 然后,在hellotplete方法开始工作。 这就是它偷偷摸摸做过的事情,基本还是很好理解的。我唯一好奇的是它的线程管理方式,我猜测他是用的单件模式。第一个asyncqueryhandler的实例化会导致创建一个线程,从此该线程成为不死老处男,所有的contentresolver相关的工作,都由该线程统一完成。个人觉得这种解决方式很赞。本来这个线程的生命周期就很难估量,并且,当你有一个contentprovider的请求的时候,判断你会做更多的类似操作并不过分。就算错了,花费的也只是一个不死的线程(与进程同生死共存亡...),换来的却是简单的生命周期管理和无数次线程生死开销的节约。同时另外一个很重要的问题,他并会涉及到单件中数据同步的问题,每个类都有各自的handler类,彼此互不干扰,分发可以分别进行。当多个数据请求的时候,在同一个contentresolver上进行的可能微乎其微,这就避免了堵塞。总而言之,这套解决办法和android的整体设计算是天作之合了。 所以建议,如果你有什么非contentprovider操作,却需要异步多线程执行的话,模拟一套,是个不错的策略,当然,具体情况具体分析,生搬 硬套是学不好马列主义的。 7.显示控件使用 android的界面显示同样也是基于控件的。通常是用viel的样式来做的。具体细节不想说了,可以参考 samples里的apidemos/vieplementing a ui这篇doc。其他还有很多,感觉算是sdk讲述的最多的内容。 从控件的使用上,和网页的设计类似,尽量用parent_e来做风格,抽取所有的字串等信息做本地化设计。相关内容参看implementing a ui就好。 一类比较重要的是数据绑定控件。如果做过会从中看到很多类似的地方。一个支持数据绑定的控件,比如listviepleadapter和 simplecursoradapter。前者是绑定一个静态的array,后者是绑定一个动态的cursor。cursor前面说过,是一个指向数据源的随机迭代器,将viel文件。还有就是一个列和现实控件的对应关系。那个控件显示哪个列的值,这是需要配置的。为了定制一个良好的数据显示控件,最简单你可以定制很pp的rople_list_item_1, simple_list_item_2, t等默认的ro的事件。可以满足你比较基础的需求。如果你觉得只有一个listvieode(shortcut_default_keys),可以开启快捷键模式,然后你可以将菜单绑定到指定快捷键上就ok了。个人觉得tip也是一个比较重要的东西,但目前观察看来,这个东西只能够自己提供了。界面的动态性有时候是不可避免的,比如说菜单就是一个需要经常根据光标位置提供不同的选项。这个东西android很人道的考虑到了,你可以参看nodelist这个sample。它采取的应该是一个静态模拟动态的方式,这样有助于提高速度。你也可以利用viel创建一个控件。成本据doc说很大,不到万不得已不要使用。 消息传递 在前面写android的contentprovider时候,可以看到那是基于观察者模式的一个消息传递方法。每一个cursor、contentresolver做为一个小的注册中心,相关观察者可以在这个中心注册,更新消息由注册中心分发给各个观察者。而在mfc或中,都会形成一个消息网,让消息在网中流动,被各节点使用、吃掉或者在出口死掉。 相比之下,我个人觉得基于intent的android核心消息传递机制是有所不同的。它应该会有一个全局性的注册中心,这个注册中心是隐性的,整个android系统中就那么一个。所有的消息接收者,都被隐形的注册到这个中心。包括activity,service和intentreceiver。其实说隐形注册是不确切的,所有注册都还是我们手动告诉注册中心的,只是与传统的方式不一样,我们通常不是通过代码,而是通过配置文件来做。在应用的manifest中,我们会为一些activity或service添加上intent-filter,或在配置文件中添加receiver/receiver项。这其实就相当于向系统的注册中心,注册了相关的intent-filter和receiver(这个事情完全可以通过代码来做,只是这样就失去了修改的灵活性)。 当程序有一个消息希望发出去的时候,它需要将消息封装成一个intent,并发送。这时候,应该是有一个统一的中心(恩,有可能android底层实现的时候不是,但简单这样看是没问题的...)接受到这个消息,并对它进行解析、判定消息类型(这个步骤降低了耦合...),然后检查注册了相匹配的filter或receiver,并创建或唤醒接收者,将消息分发给它。这样做有很多好处。虽然这种传递有的时候不如点对点的传递快(这有些需要速度的地方,我们看到android会通过直接通信来做),但有时候又因为它只经过一跳(姑且这么叫吧...),比复杂的流动又要更快。更重要的是,它耦合性低,在手机平台这种程序组件多变的条件下使用十分适合。并且它可以很容易实现消息的精确或模糊匹配,弹性很大。(我个人曾想在开发一个c++二次平台的时候引入这样的机制,但在c++中,建立一套完整的数据marshal机制不容易,相比之下,用java来做会简单很多...) 恩,废话说了很多,具体讲讲android中intent的使用。当你有一个消息需要传递,如果你明确知道你需要哪个activity或者其他class来响应的话,你可以指定这个类来接受该消息,这被称为显性发送。你需要将intent的class属性设置成目标。这种情况很常见,比如startactivity的时候,会清楚当前activity完了应该是哪个activity,那就明确的发送这个消息。 但是,有的时候你并不确定你的消息是需要具体哪个类来执行,而只是知道接收者该符合哪些条件。比如你只需要有一个接收者能显示用户所选的数据,而不想制定某个具体的方法,这时候你就需要用到隐形发送(传统上,我们可能会考虑用多态,但显然这种方式更为灵活...)。在android中,你可以为intent指定一个action,表示你这个指令需要处理的事情。系统为我们定义了很多action类型,这些类型使系统与我们通信的语言(比如在activity里面加一个main的filter,该activity就会做成该应用的入口点),当然你也可以用于你自己的应用之间的通信(同样当然,也可以自定义...)。强烈建议,在自己程序接收或发出一个系统action的时候,要名副其实。比如你响应一个viearshal在java里做,是不费什么力气的。 android的intent发送,可以分成单播和广播两种。广播的接收者是所有注册了的符合条件的intentreceiver。在单播的情况下,即使有很多符合条件的接收者,也只要有一个出来处理这个消息就好(恩,个人看法,没找到确切条款或抉择的算法,本来想实验一下,没来得及...),这样的情况很容易理解,当你需要修改某个数据的时候,你肯定不会希望有十个编辑器轮流让你来处理。当广播不是这样,一个receiver没有办法阻止其他receiver进行对广播事件的处理。这种情况也很容易理解,比如时钟改变了,闹钟、备忘录等很多程序都需要分别进行处理。在自己的程序的使用中,应该分清楚区别,合理的使用。 数据模型 数据库操作 从我目前掌握的知识来看,sqlite比较轻量(没有存储过程之类的繁杂手段),用起来也比较简单。实例化一个sqlitedatabase类对象,通过它的apis可以搞定大部分的操作。从sample中看,android中对db的使用有一种比较简单的模式,即派生一个 contentproviderdatabasehelper类来进行sqlitedatabase对象实例的获取工作。基本上, contentproviderdatabasehelper类扮演了一个singleton的角色,提供单一的实例化入口点,并屏蔽了数据库创建、打开升级等细节。在contentprovider中只需要调用contentproviderdatabasehelper的opendatabase方法获取sqlitedatabase的实例就好,而不需要进行数据库状态的判断。 uri 像进行数据库操作需要用sql一样,对contentproivder进行增删改查等操作都是通过一种特定模式的uri来进行的(ig:content: .)唯一标识该uri的类型。所谓uri的类型,就是描述这个uri所进行的操作的种类,比如 ,后者是单值),但 就会是一个类型(只是id号不同而已)。 在contentprovider通常都会实例化一个contenturipraser来辅助解析和操作传入的uri。你需要事先(在static域内)为该contenturipraser建立一个uri的语法树,之后就可以简单调用 contenturipraser类的相关方法进行uri类型判断(match方法),获取加载在uri中的参数等操作。但我看来,这只是在使用上简化了相关操作(不然就需要自己做人肉解析了...),但并没有改变类型判定的模式。你依然需要用sn name与value的对应。但为了屏蔽contentprovider用户涉及到具体数据库的细节,在android的示例中,用了一个小小的模式。它为每一个表建一个基于basecolumn类的派生类(其实完全可以不派生自basecolumn,特别当你的表不基于默认的自动id做主键的时候),这个类通常包括一个描述该表的contenturi对象和形如 public static final title = title这样的column到类数据的对应。从改变上角度来看,你可以修改column的名字而不需要更改用户上层代码,增加了灵活性。 insert方法如果成功会返回一个uri,该uri会在原有的uri基础上增加有一个rovc的方式。cursor、contentresolver相当于控制层,数据层和显示层的交互通过控制层来掌管,而且控制层很稳定不需要特别定制,通常工作只在定制数据层和显示层空间,还是比较方便和清晰的。 10.学习感想 通过这学期对安卓的学习,大概了解了以上一些知识,对安卓有了初步的了解,这几个月给我的东西我想用有形的和无形的两部分概叙,形的当然就是技术水平的长进,虽然其中肯定有很多的不足,相信慢慢会体会到。 第二篇:安卓 课程学习心得 心得体会 学号:姓名:班级: 一开始接触 android 是从自己的手机开始的,觉得它很酷,是我喜欢的风格,然后我就通过了一些网络渠道去了解android。在选课的时候发现有这个课程,于是我就报名了。刚开始接触 android开发时感觉到它很有意思,在界面开发上和 atrix,用起来稍有点难。 第三,因为android的应用的开发语言用的是java语言,并且在android中也用到了java核心类库的大量的类,因此,在学习android开发之前,可以先把java基本语法和java se的基础类库好好学习一下android应用程序开发是以java语言为基础的,所以没有扎实的java基础知识,只是机械的照抄别人的代码,是没有任何意义的。 至少要掌握以下两个方面的内容:a) java基础语法:具体的知识点列表可以在这里下载:《java知识点列表》。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,可以看书或者是看视频,但是关键是要多加练习,无论是书上的练习还是视频里面的练习,都需要仔仔细细的完成;b)设计模式:由于在android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《effective java》和《: principles,》这两本书中找到。 第四篇:如何学习安卓 如何学习安卓 想学编程开发,那要先会一门编程语言,现在可以试着去学学c语言,虽然这个安卓沾不上边,但是,c语言的编程思想还是很重要的,学完了c语言之后,他的语法基本上和所有的编程语言都很相像, 能影响你的思维,帮助你理解其他的编程语言的。之后呢,在好好看看《数据结构》,这很重要。然后再去学学java语言,因为android的应用的开发语言用的是java,所以一定要好好学习。 最后了解下数据库,我们在学习数据库之前都先学了《数据库原理》《离散数学》《关系代数》,有了这些基础之后再去学数据库,数据库也有很多可以选择的,推荐mysql。 加油! 第五篇:如何学习安卓开发 如何学习安卓开发安卓开发学习已经成为it行业的新潮流。时下,android也以其创造力、前瞻性、延续性和实现能力成为行业首领,可是怎么学好android呢今天,欧柏泰克的老师告诉你如何学好android。 熟悉java基础知识 android应用的开发语言用的是java语言,并且在android中也用到了java核心类库的大量的类,因此,在学习android开发之前,可以先把java基本语法和java se的基础类库好好学习一下。android应用程序开发是以java语言为基础的,所以没有扎实的java基础知识,只是机械的照抄别人的代码,是没有任何意义的。 建议在android课程前期的java学习阶段中,需要用心的学好。 熟悉一门编程语言 现在大学里面和计算机相关的专业甚至理工类专业一般都会开设c语言课程,只是很多同学在大学期间并没有好好学习,如果对它掌握的不太好或者很久没用了,建议先从将其好好复习一下,将其基本的语法再好好回顾一下,最好能搭建一个环境来运行、调试它。如果没有学过,不妨也提前学习一下。大部分的高校所开设的c语言使用的教材都是用它作为教材,因此无论是购买还是借阅,都容易找到; 熟悉数据结构和算法基础知识 如果后续有志于游戏方面的开发,最好具备一定的数据结构和算法基础知识。虽然现代的高级编程语言中,其类库中已经帮我们实现了大部分的数据结构,一般情况下,我们直接使用即可。但如果能对其原理有所了解,当需要在这些数据结构和算法中间的时候,可以更加的清楚到底应该选择哪个数据结构或者算法。另外,在图形图像处理上面,线性代数的作用也非常重要,如果能掌握一点这方面的基础知识,无疑也会在后续的学习中如虎添翼。 ?

免费下载 Word文档免费下载: 安卓学习心得体会(精选多篇)

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服