电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

13页
  • 卖家[上传人]:cl****1
  • 文档编号:478641119
  • 上传时间:2022-07-22
  • 文档格式:DOCX
  • 文档大小:29.37KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、安卓学习心得体会(精选多篇)android学习心得093380117计算机应用张峰1. 关于 activity1. 在一个activity中使用多个view如果把activity看作mvc中的control?它负责管理ui和接受事件,虽 然说一个activity通常对应一个屏幕,但事实上,我们是可以只用一个activity 管理多个不同的view来实现简单的逻辑。首先,我们增加一个新的资源描述layout/second.xml。除了一个“hello中国”以外,增加一个按钮可以返回前一个界面。然后, 在代码中我们要为hello two增加两个方法,se tviewonecommand和 set view twocommand,分别处理一下在不同界面时,从资源里加载组件并为组件 绑定一个事件处理器最后,我们需要在oncreate的时候,也就是启动后的main 界面上设置一下按钮事件处理器。2. 还是回到正道上,多个activity之间的跳转android中提供一个叫intent的类来实现屏幕之间的跳转,按文档的说法, 似乎他们也建议采用这种方法,intent的用法比较复杂,现在我先看看它最

      2、简 单的用法。这里的跳转功能用intent来操作,它的最简单用法就是用函数setclass() 设置跳转前后两个activity类的实例,然后调用activity自己的 startactivity(intent)即可。最后一句 finish()表示将当前 activity 关掉。然后,我们同样弄一个activity类hellothreeb,代码与前面的差不多, 只是将set class的两个参数反一下,这样就可以简单地实现在两个activity 界面中来回切换的功能了。2. 关于intent的使用intent分为两大类,显性的和隐性的。一般来说,intent要定位事件的目 的地,无外乎需要以下几个信息:1种类,比如我们常见的launcher_category就是表示这是一类应用程序。2类型,在前面的例子中没用过,表示数据的类型,这是隐性intent定位 目标的重要依据。3. 组件,前面的例子中用的是set class,不过也可以用set component来 设置intent跳转的前后两个类实例。4附加数据,在con tent uri之外还可以附加一些信息,它是bundle类型 的对象

      3、。其实,如果是在一个应用内部,这种隐性的intent实在有点别扭,个人觉 得,这种松藕合的实现方法,只适用于那些较大的系统或者多个不同的应用之间 的调用,可手机上又有什么“较大”的系统呢?无非是可以与不同来源的多个应 用之间方便地互操作而已,那么会是什么样的场景呢?比如,给qq好友发送 gmail邮件,用googlemap查找qq好友所在的位置?看上去挺不错的。关于这个con tent provider,其实还有话说,它主要是的那些看似数据库 操作的方法我们都没真正去实现呢。不过今天就到这里了,等下回再去研究吧。3. 关于 listactivity准备一个list对象并借助adapter就可以构造出一个列表。重载 onlistitemclick方法可以响应选择事件,利用第一个参数可以访问到这个 listview实例以得到选中的条目信息。这里有一点要说明的,就是如果更简单 的话,其实连那个set con ten tview都可以不要了,android也会自动帮我们构 造出一个全屏的列表。但是本例中我们需要一个textview来显示选中的条目, 所以我们需要一个layout.mainb描述

      4、一下这个列表窗口。这里需要注意的是那个listview的id,是系统自定义的android:list, 不是我们随便取的,否则系统会说找不到它想要的listview 了。然后,在这个 listview之外,我们又增加了一个textview,用来显示选中的条目。再来说说这里用到的arrayadapter,它的构造函数中第二个参数是一个资 源id, arrayadapter的api文档中说是要求用一个包含textview的layout文 件,平台用它来显示每个选择条目的样式,这里的取值是r.layout.list_row, 所以,我们还有一个list_row.xml文件来描述这个布局,相当简单。从arrayadapter上溯到baseadapter,发现还有几个同源的adapter也应 该可以使用,象simpleadapter和cursoradapter,还是做个例子来实验一下吧。然后,在hellotw(请你继续关注好范文网:www.HaOwoRd.coM)ob中的 oncreate函数中,修改代码,有几个不同:items的元素是hashmap实例,这是 一点变化,然后构造函数除了要求it

      5、 ems以外,还要求提供一个st ring来说明 用hash表中的哪个字段显示在列表中,而后是一个资源id的数组。因为单纯的cursoradapter是抽象类,所以我用的是它的子类 simplecursoradap ter,很好理解,先用con ten tresolver查询通讯簿得到一个 游标,然后告诉simplecursoradapter要用其中的people.name作为显示项来构 造出一个adapter即可。4. 关于 dialog注意到android.app包下除了 dialog以外,还包括了几个系统定义好的对 话框类,女口 datepickerdialog、timepickerdialog 及 alertdialog。其中alertdialog我上回用过一次,基本上就那样子了,今天看看另外两 个对话框的使用吧。很简单的,无非是需要一个ondatesetlistener接口的实现而已,在它里 面的dateset方法中就可以得到选择的日期了。而timepickerdialog与 datepickerdialog 使用如出一辙。看看另一个progressdialog的用法吧,这个

      6、类与alertdialog 样包含了 多个static的方法,所以使用起来是非常方便的。比如说,如果我们需要用它 来表示一个长时间的操作。5. 关于 service 和 notification大略地看了一下android.app下的service类,觉得它与activity非常相 似,只是要注意几个地方:1. 生命周期,service的从oncreate()-onstart(int,bundle)-ondestroy()显得更为简单。但是它的 onstart是带参数的,第一个id可用来标识这个service,第二个参数显示是用 来传递数据的了。比较activity,传递数据的bundle是在oncreate就带进入 的。2. service 的启动由 context.startservice 开始,其实 activity 或者 service都是con text的派生类。结束于con tex t.s topservice()或者它自己的 stopself()。3. service还有一个与acti vi ty不一样的是它可以由另一个con text去绑 定一个已存在的service。

      7、就是这个方法con tex t.bindservice(),被绑定的 service要求是已经oncreate 了但可以没有onstart。在service类中有个抽象 方法getbinder()可以得到这个ibinder对象。关于这方面的细节,以后再看, 这里只做个记录罢。4. 与service有关的还有一个安全的问题,可以在androidmanifest.xml 中用标签来声明一个service的访问权限,关于android的安全问题也留待以后 再解决吧。6. gridview 与 imageview简单一点吧,就瞧瞧那个grid的效果,android提供了一个gridview,不 过从apidemo中看来,它似乎与pc上的grid差别还是挺大的,更像那个iconview 的感觉。不知道android中如何实现表格界面?虽然在移动终端上,表格一般不 会有谁使用,大家似乎更倾向于使用listview,而android对于listview则有 更简单的实现listactivity。很简单,只要重载几个方法就可以了,关键是那个get view方法,它负责 构建出每个单元格中的对象实例。这

      8、里我们构造的是一个imageview实例。然后就是同样的将这个adapter赋给gridview即可,大家可以看看效果, 注意在做这个例子前,先放几个小图片到res/drawable目录下,buildproject 一下就可以得到那个r.drawable.a 了。在get view方法中我们使用了 imageview类,这又是一个widge t。除了上 面用到的几个方法以外,还有以下几个方法值得注意:与图像来源有关的方法,我们只用了资源文件的方式。还是习惯性跑题了,其实,我是想通过我对这个类的无数次debugger跟进, 说说它的多线程异步处理的解决策略的。他的基本策略如下:1. 当你实例化一个asyncqueryhandler类时,它会单件构造一个线程,这 个线程里面会构建一个消息循环。2. 获得该消息循环的指针,用它做参数实例化另一个handler类,该类为 内部类。至此,就有了两个线程,各自有一个handler来处理消息。3. 当调用onxxx的时候,在xxx函数内部会将请求封装成一个内部的参数 类,将其作为消息的参数,将此消息发送至另一个线程。4. 在该线程的handler中,

      9、接受该消息,并分析传入的参数,用初始化时 传入的con ten tresolver进行xxx操作,并返回cursor或其他返回值。5. 构造一个消息,将上述返回值以及其他相关内容绑定在该消息上,发送 回主线程。6. 主线程默认的asyncqueryhandler类的handlemessage方法会分析该消 息,并转发给对应的onxxxcomplete方法。7. 用户重写的onxxxcomplete方法开始工作。这就是它偷偷摸摸做过的事情,基本还是很好理解的。我唯一好奇的是它 的线程管理方式,我猜测他是用的单件模式。第一个asyncqueryhandler的实例 化会导致创建一个线程,从此该线程成为不死老处男,所有的con ten tresolver 相关的工作,都由该线程统一完成。个人觉得这种解决方式很赞。本来这个线程 的生命周期就很难估量,并且,当你有一个con tent provider的请求的时候,判 断你会做更多的类似操作并不过分。就算错了,花费的也只是一个不死的线程, 换来的却是简单的生命周期管理和无数次线程生死开销的节约。同时另外一个很 重要的问题,他并会涉及到单件中数据同步的问题,每个类都有各自的handler 类,彼此互不干扰,分发可以分别进行。当多个数据请求的时候,在同一个 con ten tresolver上进行的可能微乎其微,这就避免了堵塞。总而言之,这套解 决办法和android的整体设计算是天作之合了。所以建议,如果你有什么非con tent provider操作,却需要异步多线程执 行的话,模拟一套,是个不错的策略,当然,具体情况具体分析,生搬硬套是学不好马列主义的。7. 显示控件使用android的界面显示同样也是基于控件的。通常是用view控件配上xml的 样式来做的。具体细节不想说了,可以参考samples里的apidemos/view,和 view的doc,以及implementing a ui这篇doc。其他还有很多,感觉算是sdk 讲述的最多的内容。从控件的使用上,和网页的设计类似,尽

      《安卓学习心得体会(精选多篇)》由会员cl****1分享,可在线阅读,更多相关《安卓学习心得体会(精选多篇)》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.