android总结(精选10篇)
零零碎碎的总结:
1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍.2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来.3.要有自己的知识库,可以是一个工具类,把写过的,看过的好的代码放进去,也可以是一个笔记本软件.因为只有放在知识库里的东西,才是你最重要的财富.4.如果你想做自由职业者,你需要学英语,因为在国外的盈利比国内多很多.如果你想进大公司,好公司,你需要学英语.你想深入学习android,但中文的android文章太少了,你查查百度,到处都是copy来copy去的hellword,所以,你需要学英语.如果你想出国,你需要学英语.5.Http协议要研究透彻.http的信息头有什么信息,分别代表什么,信息体有什么信息,代表什么,都要搞的明明白白.scoket也是一样.6.在eclipse里的layout文件都有graphical Layout.通过这个好好的把UI调整好.7.Android里的junit每次运行都会打包新的apk到设备上跑.效率非常慢.如果是跟android无关的测试,最好自己建立一个单纯的java项目做测试.8.面试的时候不要觉得自己提的薪水太高,物以稀为贵明白吗?不管你的期望薪资多少,都有可能实现,这只是时间问题.9.如果一家小公司通过猎头找到你,即使公司在小,也比外面那些40,50人的公司还要好.不要觉得公司不行,担心会倒闭.放心吧,至少活1年是没问题的.10.不要把自己绑在android上,有空也研究下IOS(最近小弟就准备研究ios,刚买了6本书...).11.移动互联网最少还有10年的快速增长.android最少还有两年的快速增长.走android这条路是不会错的.12.有空多学点开放平台的SDK.比如新浪微博,腾讯微博,淘宝平台,支付宝移动支付平台,快钱移动支付平台等等..这些都是不愁没市场的.13.即使技术再差,也要发布一个应用到market上去.因为这样你才了解做一个应用的逻辑.14.每个月拿到薪水省500-1000元出来.这些钱投在买学习资料,去培训班上课...在培训班,花再多的钱也是值得的.15.你真正的价值在项目经验和对底层的认识上.不要忽略基础知识.16.如果有空把Android的源代码看一下.底层的东西很枯燥,但这些很值得学.17..程序员其实是艺术家.代码重构和设计模式,是非常非常重要的东西,必须要学
18.不要去维护一个项目,要去做一个项目.19.一开始不要轻易去大公司,虽然大公司是可以让你呆一辈子的.但你的起点低,以后成就也低.20:每天早上提前20分钟上班,5分钟把今天的工作计划写好.15分钟用来看各大It论坛的新闻.21:如果以前没做过java,那就把SSH看下,自己搭建一个小服务器.这是为了接私活用.22:PS一定要学,接私活用.23:多下载市面上好的应用,每天都用,只有这样你才能了解市场.现在所有的APK都可以反编译,看源代码麻烦,但看layout和图片很容易,所以....你懂的.24.要有羞耻心.25.老板仅仅要求你把东西做完,需求完成.但你必须对自己要更严格一点.写一段代码,从网上复制一份代码,并不是可以用就行了,你还必须明白他的原理,为什么这样就可以?这才是对你最有用的地方,这也是你今后薪资增长的保证.26.要懂得舍得.移动领域发展太快,必要时必须要用钱换时间.不然你会远远落后别人(我之前花了4000大洋去培训班学IOS三天).27.要明白自己想要什么,什么才能最大性价比提高你的能力.对我来说,能让我提高最大的,就是Android和IOS同时会,并且自己可以做架构设计.28.看android技术书籍最快的学习方法,先通读一次.然后把书本上的demo一个一个写出来.不要觉得太容易不去写.很多东西都是这样,看起来简单,但做起来难.最后再对照自己写出来的程序代码去理解书本的意思.29.应用和游戏是2个方向,没有一个公司会同时做游戏又做应用,即使是外包公司,大多也只做一块.专精一个就可以了.30.每次做完一个项目,要强迫自己做总结,通过这个项目,我学到了什么新技术?犯了哪些
SB错误?
Xxxxxx大学
专业实习报告
——201X.XX.XX
XXXXXXXXXXX学院 计算机通信
信息技术有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX
一、实训地点
XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。
二、实训目的
到实际生产中的种种Android
Android现对androidAndroid
Android
android实习可以让我们与时代最目的:
1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。
培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括:
1、确定开发的程序,收集和调查有关技术资料。
2、按软件工程步骤进行程序设计。
3、对完成的程序进行测试和完善。
4、完成课程设计报告。
三、实训内容
学习实训的内容主要包括如下:
开发环境:了解了android的起源与发展,学习安装 Eclipse 插件(ADT)学习AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具
Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。assets资源目录Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件。
基础开发
一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()这七个方法定义了Activity的完整生命周期
二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dssAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。
Data:Data通常是URI格式定义的操作数据。例如:tel://。通过setData()方法设置。
Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。
Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。
三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面;
四、BroadcastRecever 生命周期
1.在广播到达接收者时调用onRecever();方法
2.注册广播的几种方式包括:代码注册;项目清单注册;
五、Handler 1.Handler、Message、MessageQueue和Looper之间的关系的关系,Handler的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MessageQueue封装在Looper中)发送消息,Handler在创建时就会关联以个Looper默认关联当前Looper.作用:发送消息(Handler在主线程启动一个子线程,在子线程调用SendMassager(),发送到主线程的HandlerMessage()方法);处理消息(调用HandlerMessage()方法处理)。
数据存储
一、Sharepreference:保存应用系统的配置信息等的键值存储机制。(使用键值机制:Bundle ContentValues Map JSONObjecdt)
二、存储方式 1)是一种键值存储方式,可以持久化存储变量的值(Sharepreference存储的值都是基本类型的数据)存储的数据是以xml文件的形式存在,存储在/data/data/packagename/shared_prefs目录中文件存储
I/O存储,主要是用于大文件的数据的存取,比如视频、图片等,该中存储方式在使用的过程当中更新比较困难。
文件存储的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于读写文件数据.第一个参数name中不能包含路径分隔符“/”
三、Sqlite
自定义一个数据库的操作类,该类要extends SQLiteOpenHelper类
public class MyHelper extends SQLiteOpenHelper { //类没有实例化,是不能用作父类构造器的参数,必须声明为静态
private static final String name = “china”;//数据库名称 private static final int version = 1;//数据库版本 public MyHelper(Context context){ //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类
super(context, name, null, version);} public void onCreate(SQLiteDatabase db){
//该方法是在第一次实例化数据库操作对象的时候被调用
//可以在其中做一些初始化的工作,比如创建数据库表等
} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
//在数据库的版本发生改变的时候会被调用
} }
四、ContentProvider 实现不同应用之间数据的访问和共享: 1)通过实现一个ContentProvider的抽象借口,将本应用的数据完全暴露出去,其中数据是以表的形式暴露的,暴露数据的时候要提供公共的URI。
2)其它应用通过android提供的ContentResolver接口访问ContentProvider暴露的数据。
五、网络存储
一、通过网络提供的存储空间来上传或者是下载那些存储在网络空间的数据信息。
网络编程:分为两种 1)基于Socket的网络编程:该网络编程使用的协议主要是TCP和UDP协议
面试题:TCP和UDP区别:TCP:面向连接 可靠 延时长 效率低UDP:面向无连接 不可靠 延时短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(数据报)2)基于Http的网络编程:
该网络编程使用的协议是面向Http协议; 该网络编程是以xml/json格式的数据为载体,来进行相互通信数据; Android基于http协议的网络编程,使用的标准接口有两个:HttpURLConnection以及apatch的接口HttpClient Http协议通信分为两种方式:get请求方式和post请求方式
六、Xml格式数据解析Json格式数据解析:
Dom解析:dom解析一般是把xml文档转换成一棵文档节点树,存储在内存中
优点:xml文档树在内存中完整存储,可以直接对该文档树的数据和结构进行修改;可以通过解析器去访问节点树上的任何一个节点;Dom解析的API使用简单方便。
缺点:当xml文档比较大的时候,该解析方式消耗内存资源 Sax解析:
优点:对内存的要求较低,方便解析xml的部分;
缺点:当xml文档结构复杂的采用SAX解析,编码过程比较复杂 Pull解析:sdk提供的内置解析方式,解析过程类似于sax解析,节省内存资源,而且比sax解析更加简单方便。
JSON格式数据:(1)key-value键值对象(无序的)(2)数组(有序的)
用到的内容包含:4个类一个异常
JSON格式数据的解析可以使用Google提供的gson解析工具 问题:xml格式数据解析和JSON格式数据解析的比较
四、实训心得:
1通过几个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。
4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。
在这段时间主要对Android平台有了一定的了解,对一些简单的设计也有了一定的掌握Android概念
Android是一个基于Linux核心的开放手持设备(主要是手机)平台操作系统,与Windows Moble、Symbian等手机操作系统处于同一级别。“Android大奖赛“首页上列出的可能设计方向
多媒体工具社交网络新闻、资讯工具环保、慈善协作生产力工具Android Developer Challenge(ADC)游戏实时资讯服务崭新的用户界面您想到的应用程序项目构架
src/:源代码(sourse)目录
“src”目录包含了“Android应用程序”各个程序源文件。对于上例 ”Bmi.java”是新 序项目中的主要程序块。gen/:自动生成(Generate)目录
gen目录中存放所有自动生成的文件。最关键就是R.java,这个文件是自动产生的,与”res”目录下的XML文件内容同步更新。
Android<版本号>/:参考函数目录
此目录的作用是将AndroidSDK里所有可呼叫的类、方法函数,分门别类的列出,好方便开发者来参考。
assert/:对此目录目前还不是太懂 res/:资源(Resource)目录
res目录存放所有程序中用到的资源文件。在里边还有两个经常访问的目录,分别 “layout/:页面布局(layout)目录”和“values/:参数值(values)目录”
“AndroidManifest.xml”是Android应用程序的功能列表,每个应用程序都在这个文件中,列出该程序所提供的功能。我完成的BMI程序
此程序是我参考书上的例子所完成的程序。
BMI,英文全称:Body Mass Index,中文名称:身高体重指数,是一个计算值,整个程序的思路是当我们在对应的文本框内输入身高(cm)、体重(kg),输入完成后按下“计算BMI”键,屏幕上就会显示计算结果,并弹出“你应该节食”、或“你应该多吃点”等健康建议的信息框。
健康指标的计算方法是:身高(height)/(体重(weight)/100)只要BMI值超过25时就算偏胖、BMI值低于20就算偏瘦,介于这之间算正常。
下面是我完成的程序界面:
计算得到的BMI值是20.57,在20—25之间,体型正常。由于我对两个文本框内输入的内容进行了限制,因此只容许输入数字
BMI值为25.56,信息框弹出“你该节食了”
在界面的下侧有一个“健康小常识按钮”,当点击此按钮时,会链接到一个有关健康生活小常识的网页上:
在每次点击“计算BMI值”按钮后首先会弹出一个消息框,消息框中包括两个按 钮,当点击确认按钮时消息框消失;当点击首页按钮时会连接到相应的网页
下图为点击消息框确认按钮后显示的网页:
总结
1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。那么Java学到什么程度才算是过关呢?我个人认为至少要掌握以下两个方面的内容:
a) Java基础语法: 具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,可以看书或者是看视频,但是关键是要多加练习,无论是书上的练习还是视频里面的练习,都需要仔仔细细的完成;
b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》这两本书中找到。
2.Linux基础知识: 大家都知道,Android系统的基础是Linux操作系统。在开发过程当中,我们也需要使用到一些Linux命令。所以说一些Linux的基础知识是必须的(话说现在的程序员,不懂Linux都不好意思跟人家打招呼),推荐大家看看《鸟哥的私房菜》这本书,写的相当不错;
3.数据库基础知识 这个比较简单,就是一个增删改查的数据库操作,可以看一下这本书:《SQL编程练习与解答》
4.网络协议 至少需要学习两种基础的协议,HTTP协议与Socket协议;
5.Android基础知识 有了以上的铺垫,再来看Android,是不是觉得轻松了很多呢?至于基础知识的学习顺序,最好的方法就是按照Android SDK帮助文档当中的Dev Guide里面的顺序,我的《Android视频教程》也基本上是按照这个顺序录制的;
6.服务器端开发知识: 由于很多Android应用程序都需要服务器端的支持,所以掌握一些服务器端开发知识还是非常有必要的。至于选择哪一种服务器端知识进行学习,就比较麻烦了,因为技术的种类实在是太多了:
a)Java EE: 就是上面邮件当中所提到的SSH—Struts+Spring+Hibernate。这种技术的优点的功能完整、强大,已经使用了很多年,而且既然大家已经非常熟悉Java了,那么学习SSH看起来也顺理成章。但是使用这种技术开发服务器端程序,非常麻烦。即使是一些简单的功能,也可能需要大量的代码和配置文件来实现;
b)PHP: 简单易学,开发快速。但是我们需要多学一种语言,是否得不偿失,就要大家自己判断了;
c).NET: 这项技术的特点和Java EE差不多,但是要想掌握.NET,则需要掌握c#,也是个麻烦的事情;
本地SharedPreferences保存信息要加密
统一日志输出开关控制(开发测试日志输出打开,版本正式上线日志输入关闭)正式包需要混淆打包
app与服务器交互接口参数以及返回数据需要进行数据加密 app与服务器交互接口需要有token过期失效机制 声明适当的manifest权限
一 使用killProcess()函数,首先获取当前进程的id,然后杀死该进程: android.os.Process.killProcess(android.os.Process.myPid());
通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空
二 在activity的生命周期函数中添加如下的函数,强制关闭与该包有关联的一切执行:
ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(“packagename”);
还需要在AndroidManifest.xml文件中加入如下的权限:
此做法:只能杀死别人,不能杀死自己
三、终止当前正在运行的Java虚拟机,导致程序终止 System.exit(0);不会把自己的应用程序杀死
企业中做法:
创建类app 继承Application
AndroidMainfest-->name-->app //声明该类为整个应用程序全局的实例
创建整个应用程序全局的实例
App.class: ArrayList activities;
其他的Activity中: public void onCreate(Bundle savedInstanceState){ App app =(App)getApplication();//获取应用程序全局的实例引用
app.activities.add(this);//把当前Activity放入集合中 }
public void onDestory(){ App app =(App)getApplication();//获取应用程序全局的实例引用
app.activities.remove(this);//把当前Activity从集合中移除 }
安全退出:
光阴如梭,眨眼之间学期又近结束。从成立之初到现在,Android创新团队也已经走过了半年的时光。回首这个学期的团队工作,感到忙碌而又充实。在团队全体成员努力下,我们较好地完成了本学期的各项工作,取得了一定的成绩,得到了很多宝贵的经验,当然也有不足之处,现总结如下:
一、团队的体系结构逐渐完善
Android创新团队经过不断的探索和尝试,形成了相对独立的体系结构,成立之初,我们团队所有成员就对团队的组织结构、章程、团队规划及本学期工作计划进行了认真的讨论和研究。通过一学期的实践,这些体系正在不断完善。我们的最终目标是让团队工作有一种企业工作的环境和氛围,以便使队员们尽早适应社会上公司的需要,多获得一些实际的经验和技术,虽然目前这个目标还比较难实现,但以后团队的工作都会朝着这个方向去努力的。(接触、沟通交流、合作)
二、团队存在的基础
一方面,学校创新中心为各个团队分配了工作室,并提供了相关设备和资金支持,为团队的正常运行提供了必要的物质条件;另一方面,开展培训工作、做创新项目以及参加比赛是一个团队得以存活和发展的基础和动力,是一个团队的价值体现。Android创新团队将以此为基础,充分调动队员的积极性,努力使每个队员都能得到学习和提高的机会,从而使团队在整体水平上更上一层楼。
三、队内成员间的沟通
本学期初,我们团队进行了招新工作,此次招新共招大一大二人员23人,人数是团队成立之初的人数的一倍多。考虑到大一同学刚刚步入大学,没有编程基础,所以在要求上与大二同学不同,对大一同学主要是先给他们提供一个良好的学习氛围,通过参加团队的有关活动让他们对软件开发有一定的了解,帮助他们明确自己的目标。另一方面,团队组织了大一同学参加培训,而培训内容主要是比较基础的Html网页制作,适合大一同学学习,也希望通过培训锻炼和提高队员的自学能力。作为团队未来的储备力量,大一的同学表现都很积极主动,这一点是值得表扬的。但队员之间的沟通和交流,尤其是大
一同学之间,存在很大不足,这一点是我们制定以后的工作计划时需要特别注意的地方。
四、希望队员们理解团队和个人的关系
创新,大胆而不荒唐,团队,锻造自己的平台。
Android创新团队成立之初,因为我们大三的几个负责人在实际开发中发现团队合作的重要性,并且学到了比课堂上更加宝贵的实际经验,真心感觉到团队合作带给我们的好处,所以,基于这样一种想法,我们想让更多的同学受益,并继续传承下去,最终成立了Android创新团队。其实有心的人会发现,团队不是意味着放弃个人的利益,而是一个锻造自我的平台。我们是创新团队,要想办法利用好这个平台,锻炼自己。作为一名队员,每个人都要有自己的目标,充分利用团队这个平台,将它实现。请大家明确,团队的成功一定是它的每个队员的成功,之所以会成为一个团队,是因为我们有共同目标和追求。我们都应该为了自己的目标而努力奋斗!
厦门博看文思本方法适用于AndroidSDK2.1环境下的程序开发
安装JDK
•在java.sun.com下载JDK并安装。
•在“系统属性”的“高级”选项卡中点击“环境变量”,然后添加如下系统环境变量:
1.在PATH环境变量后追加JDK安装路径中的bin路径,本机为:
C:ProgramFilesJavajdk1.6.0_18bin
2.新建CLASSPATH环境变量或在CLASSPATH环境变量后追加JDK安装路径中的lib路径和demo路径,本机为:
C:ProgramFilesJavajdk1.6.0_18demo;C:ProgramFilesJavajdk1.6.0_18lib安装Eclipse
•在eclipse.org下载EclipseIDEforJavaDevelopers的Windows32bit版本。•下载完成后解压即可使用。
安装AndroidSDKOR离线安装
•在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。
•运行SDKSetup.exe,点击AvailablePackages,如果没有出现可安装的包请点击Settings,选中Misc中的“Forcehttps://...”这项,再点击AvailablePackages。
•选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包
•添加SDK安装目录中的tools文件夹路径至系统PATH环境变量,本机为:C:Androidandroid-sdk-windowstools
关于离线安装
用厦门博看文思上面方法更新的时候速度很慢。
更要等很久。所以我们可以直接把那些包下载下来安装。
地址就是
https://dl-ssl.google.com/androi...2.0_r01-windows.zip
https://dl-ssl.google.com/androi...2.1_r01-windows.zip
https://dl-ssl.google.com/androi...-1.1_r1-windows.zip
https://dl-ssl.google.com/androi...1.5_r03-windows.zip
https://dl-ssl.google.com/androi...1.6_r02-windows.zip
https://dl-ssl.google.com/androi...ver_r03-windows.zip
https://dl-ssl.google.com/androi...ogle_apis-6_r01.zip
https://dl-ssl.google.com/androi...ogle_apis-5_r01.zip
https://dl-ssl.google.com/androi...ogle_apis-4_r02.zip
https://dl-ssl.google.com/androi...ogle_apis-7_r01.zip
下完之后,名字以android的,解压到platforms里面;
以google_apis开头的,解压到addons里面。
usb驱动的,直接解压到根目录。
安装Eclipse插件ADT
•StartEclipse,thenselectHelp>InstallNewSoftware.•IntheAvailableSoftwaredialog,clickAdd...•
IntheAddSitedialogthatappears,enteranamefortheremotesite(forexample,“AndroidPlugin”)inthe“Name”field.Inthe“Location”field,enterthisURL:
https://dl-ssl.google.com/android/eclipse/
如果无法通过上面的地址获得插件,可将https替换为http。
(httpsispreferredforsecurityreasons)
BackintheAvailableSoftwareview,youshouldnowsee“DeveloperTools”addedtothelist.•
SelectthecheckboxnexttoDeveloperTools,whichwillautomaticallyselectthenestedtoolsAndroidDDMSandAndroidDevelopmentTools.ClickNext.•
IntheresultingInstallDetailsdialog,theAndroidDDMSandAndroidDevelopmentToolsfeaturesarelisted.•
ClickNexttoreadandacceptthelicenseagreementandinstallanydependencies,thenclickFinish.•RestartEclipse.配置ADT
在Eclipse中:
•选择Window>Preferences...•在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:C:Androidandroid-sdk-windows
•点击Apply、OK。配置完成。
创建AVD
为使Android应用程序可以在模拟器上运行,必须创建AVD。
•在Eclipse中。选择Windows>AndroidSDKandAVDManager
•点击左侧面板的VirtualDevices,在右侧点击New
•填入Name,选择Target的API,SDCard大小任意,Skin随便选,Hardware目前保持默认值
在我的上一篇文章 [Android] 环境配置之正式版Android Studio 1.0 中有介绍了。
NDK 环境搭建
下载:developer.android.com/tools/sdk/ndk/Windows32:android-ndk-r10d-windows-x86.exeWindows64:android-ndk-r10d-windows-x86_64.exeMac OS X 32-bit:android-ndk-r10d-darwin-x86.binMac OS X 64-bit:android-ndk-r10d-darwin-x86_64.binLinux 32-bit (x86):android-ndk-r10d-linux-x86.binLinux 64-bit (x86):android-ndk-r10d-linux-x86_64.bin
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ForecastData situation = null;
................
Cursor cursor = mContext.getContentResolver().query(WEATHER_URI, null,
null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
...........
cursor.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
return situation;
}
初看一下没有什么问题,但如果Cursor cursor = mContext.getContentResolver().query这里返回的错误还是会有可能造成程序的未关闭Cursor,因此我们改成标准写法:
?
1
2
3
4
5
6
7
8
9
Cursor cursor = null;
try {
cursor = getContentResolver().query(URI, .....);// 1
//dosomething
} finally {
if (cursor != null) {
cursor.close();// 2
}
}
这样改了之后,运行了很多个版本都一直没有问题,
android开发数据库Cursor 错误android.database.CursorWindowAll
,直到有一天一个同事发现可能查询数据库比较耗时。因此把方法放到线程里面去执行,而已每次查询的时候都会创建一个线程。没有想到上面代码又出错误了,如果您稍不留意不会怀疑这块代码的问题,因为try-finally写法不存在逻辑上的问题。由于这里未考虑到多线程场景,try-finally并不能保证query打开游标在dosomething时,被其他线程再次调用query打开游标。所以当遇到存在多线程的调用时必须对游标打开到关闭时间段添加锁,即这里是对try-finally块加锁。
下面简单解释一下:
假设:线程A执行到1处创建了一个Cursor,然后dosomething比较耗时........
线程B又来查询数据库,因此到1处又创建一个Cursor,此时如果AB执行完,就会关闭锁,看起来没有问题,但由于是同一个对象,所以AB关闭的cursor都是B创建的,因此
【android总结】推荐阅读:
Android 个人总结07-19
android实习总结11-07
android面试总结05-07
android实习日记07-15
android商品管理07-19
android面试宝典02-08
android实验报告03-03
android 高级面试题10-24
android开发案例教程11-24
android实习报告12-19