Android 学习历程摘要(一)
初学Android,可能有些地方可能理解不正确,假设有朋友看到的话麻烦指正我一下,万分感谢。
1. 善用API DEMO,刚開始学习的人的需求基本在里面都能够满足,Eclipse导入API Demoproject出错的话可能原因是SDK版本号过低,将target属性设高就可以,然后prject——clean一下
2. Fragment属于APP,而不是VIEW,这在API Demo中也有体现,由于Fragment不不过为了展示视图,在每个Fragment中还能够对对应事件进行处理等
3. FragmentTransaction类中的addToBackStack(args)方法,是指当用户按下返回键时,系统会将当前该事务内的全部操作退回去,而不是把该事务保存起来
4. 各组件的生命周期非常重要,眼下理解还不是非常深入,过段时间进行专门的补充
5. 当须要一个Context參数时可用getActivity()或者getActivity().getApplicationContext(),由于Activity与Application都继承与Context,Activity指一个活动的窗口,通过Activity能够获得Appliction
6. Fragment中假设要获得Context须要覆写在onActivityCreated()或该生命周期之后的函数中,不然会由于Activity尚未生成进而出现nullpointer异常
7. ConnectivityManager 操作移动数据网络,网上普遍的是通过自己设置正确參数来开启网络,设置错误參数进而关闭网络的方法,此方法不好或者霸道的一点在于当你设置了错误參数进去时用户自己想打开网络都开不了了,所以个人比較支持採用反射的方式来做,之后会參考网上大神写一篇博文。
8. NetworkInfo中的getTypeName()返回的值为小写的,假设有网络的话,同一时候假设当前无网络状态NetworkInfo会为null,记得处理,避免nullpointer异常,匹配网络情况的话避免出错请使用equalsIgnoreCase,忽略大写和小写,此处API 文档上的返回值是大写,自身測试是小写,不知为何
9. String实现了CharSequence接口,所以在须要CharSequence类型变量时直接用String就可以
10. 写在onResume()中的操作可能会被反复调用,这涉及到生命周期问题
————————————————————————————————————————————————————————————————————————————
1. DialogFragment中无法再嵌套子DialogFragment,因为没有使用v4兼容包中的Fragment所以没有getChildFragmentManager,之后会再測试这方法可不能够,setDialogShow()方法再此情况下亦无效,眼下使用AlertDialog.Builder来创建对话框,原因是DialogFragment中的id在我调用的时候事实上尚未被系统所装载,所以会出现no view found的错误,设想假设提前把须要的资源装载应该能够解决这个问题,之后会针对这方面写一篇博文
2. AlertDialog.Builder中的OnClickListener()须要使用DialogInterface中的
3. BroadcastReceiver用于处理针对意图的操作,而Service多用于程序在后台执行处理数据、与用户交互等操作
4. AndroidManifest中的package=""属性指定了R文件生成的位置,也是该程序的唯一标识
——————————————————————————————————————————————————————————————————————————
1.广播接收者使用静态注冊的方式比較好,首先有些Action是仅仅能使用静态注冊的,其次代码注冊仅在程序开启过程中由我们来注冊进而处理一些事情然后在程序结束或者在程序生命周期内的某个特定时候进行关闭时才使用,静态注冊须要注意的一点(这是我自己做项目的过程中一開始没有想到的,也是经验不足的原因)就是有的朋友可能会问那静态注冊了这个广播接收者,它不就一直在后台执行着,一直在处理事情吗,那我不想它处理了怎么办,事实上我们能够通过採用參数的进行控制,比方将一个參数放入SharedPreferences中,然后广播接收者激活时获取一下參数值,依据參数值进行对应的操作
2.SharedPreferences的Mode之前理解错误以为是控制是否复写是否追加,事实上是用来控制该XML配置文件的权限的
3.SVN版本号控制,主开发于trunk文件夹中;branchs用于已公布版本号基础上的bug调整等;tags用于保存公布版本号,此文件夹仅仅读
4.DDMS中是看不到真机中的data文件夹的,由于真机没有赋予DDMS这个权限,可通过adb shell查看
5.PendingIntent中的flags參数 指定PendingIntent的一些行为,比方仅仅开启一次等
6.AlarmManagerService是service执行在systmen_server进程
7.Exported receiver does not require permission指自定义的接收者没有设置权限,设置权限或者 android:exported="false" 即指定该接收者不能跨进程使用
8.AlarmManager 依据PendingIntent的requestcode来进行区分不同的闹钟,依据这个能够用来取消指定的闹钟任务
9.Calendar.getInstance(Locale.CHINA)之后能够获得本地化的数据,比方星期的第一天是星期一等,只是这个我使用了本地化之后get所取到的星期数依然是从星期日開始的,不知为何,之后查到资料了补上
10.ListView的使用一定要记得进行优化(holder优化之后会写一篇博文总结)
11.刷新界面,在Activity中使用广播接收者,创建该Activity时注冊,销毁该Activity时注销,可是这点没有实现出来,之后攻克了专门写一篇博文总结
12.int month = c.get(Calendar.MONTH)+1; 由于算月份时是计算离第一个月差几个月,那么1月就是0
13.重点:AlarmManager.set方法的triggerAtTime假设type选择的是绝对值模式,则要使用目标时间的总毫秒数,而不是目标时间减去当前时间的毫秒数,否则会直接发送intent,由于相减之后的毫秒数代表着好早好早好早曾经就应该发送意图了
_______________________________________________________________________________________________________________________________
1.在布局配置文件里,当权重有垂直时,每个部分的layout_height必须为0dp;当权重为水平时,其每一部分的layout_width必须为0dp
2.使用SVN commit项目的时候bin、gen这类文件夹不用提交,是编译生成的文件文件夹
3.private 类名(){} 把构造函数私有化从而避免用户new
4.能够从sql_master表中获取眼下sqlite中有哪些表进而推断是否须要又一次创建我们须要的表
5.使用OnKeyDown()函数通过參数等方式来做出对后退等事件的处理
6.FragmentTransaction的remove()方法的Fragment类型參数中的fragment能够从碎片栈中通过add时设置的tag获取
7.使用当前的view来findViewById时仅仅能获取当前这个view视图中的资源,使用getActivity()再去find可获得其它视图资源
Android 学习历程摘要(一)的更多相关文章
- Android 学习历程摘要(三)
1.proguard混淆:对与Activity等不应进行混淆.否则系统将找不到生命周期函数:JSON字符串要考虑混淆之后是否会影响字段名:native方法也不混淆,否则调用不到 2.ListView的 ...
- Android 学习历程摘要(二)
1.资源文件命名仅仅能小写,否则会报错生成不了R.java文件 2.R文件导包时应该导入自己project的包,而不是android.R 3.数据库操作使用SqliteOpenHelper 4.val ...
- 笔记-Android学习历程
1. Junit 配置:在manifest节点下 写入instrumentation,在其兄弟节点下配置application <instrumentation android:name=&qu ...
- Android学习之路——简易版微信为例(一)
这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...
- 我的Android学习之旅(转)
去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...
- StudyJams学习历程总结
Study Jams 是一个学习 Google 在线课程的活动.该活动由学员自发组建课程学习小组,旨在带领小组成员入门 Android 开发,最终将 Android App 上载至 Google Pl ...
- 登录模块的进化史,带大家回顾java学习历程(二)
接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...
- Android学习资料总结
从事ASP.NET Web开发两年了,主要是做Web项目(ASP.NET WebForm和ASP.NET MVC),也做过C/S架构的企业内部系统,偶然接触Android,学艺不精,项目没做出什么,倒 ...
- Android学习路线总结,绝对干货
title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...
随机推荐
- KMP求字符串最小循环节
证明1: 对于一个字符串S,长度为L,如果由长度为len的字符串s(字符串s的最小循环节是其本身)循环k次构成,那么字符串s就是字符串S的最小循环节 那么字符串有个很重要的性质和KMP挂钩,即 i ...
- poj 1789 Truck History(kruskal算法)
主题链接:http://poj.org/problem?id=1789 思维:一个一个点,每两行之间不懂得字符个数就看做是权值.然后用kruskal算法计算出最小生成树 我写了两个代码一个是用优先队列 ...
- Spring系列
Spring系列之访问数据库 阅读目录 一.概述 二.JDBC API的最佳实践 三.Spring对ORM的集成 回到顶部 一.概述 Spring的数据访问层是以统一的数据访问异常层体系为核心,结 ...
- JavaScript模式读书笔记 文章3章 文字和构造
1.对象字面量 -1.Javascript中所创建的自己定义对象在任务时候都是可变的.能够从一个空对象開始,依据须要添加函数.对象字面量模式能够使我们在创建对象的时候向其加入函数. ...
- 解决SMARTFORMS 中table 控件单行跨页的问题
在CX项目中,MM模块做了大量的的单据打印的工作,一个问题困扰了我好久,一直不能解决.当物料描述很长时,table控件在单元格中能自动换行,这样就有可能在换页处出现一行记录的一部分打在上一页,一部分记 ...
- CentOS6.5 Nginx优化编译配置
说到Nginx,它真的算是我在运维工作中的好朋友,它优异的性能和极高的工作效率实在是让人大爱,来自internet的报告称其epoll模型能够支持高达50000个并发连接数. Epoll[维基百科]: ...
- C语言中的函数指针
C语言中的函数指针 函数指针的概念: 函数指针是一个指向位于代码段的函数代码的指针. 函数指针的使用: #include<stdio.h> typedef struct (*fun_t ...
- HTML的标签使用
<p>段落标签</p>:段落标签 <hx>标题标签</hx>:标题标签,x代表1-6 <em>斜体</em>:显示的字体是斜的 ...
- linux下一个Oracle11g RAC建立(五岁以下儿童)
linux下一个Oracle11g RAC建立(五岁以下儿童) 四.建立主机之间的信任关系(node1.node2) 建立节点之间oracle .grid 用户之间的信任(通过ssh 建立公钥和私钥) ...
- ACdream: ACfun
ACfun Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatisti ...