以下是小编帮大家整理的android个人简历,本文共10篇,欢迎大家收藏分享。

篇1:android个人简历
基本信息
姓名:diyifanwen
性别:男
民族:汉
婚姻状况:未婚
出生年月:1989-1-25
目前所在地:北京
联系电话:×××××××××××
电子邮箱:×××@diyifanwen.com
求职意向
寻求职位: 安卓工程师
求职地区: 北京
工资待遇: 6000
到岗时间: 随时到岗
工作经历
就职公司: ××××××科技有限公司
公司行业: 计算机软件
工作描述: 参与安卓项目的设计和编写
技能专长: 1.熟练使用JSP、Servlet、Jdbc等进行Java Web的编程开发。
2.熟练使用Eclipse、MyEclipse、VS等IDE开发工具。
3.熟练应用Apache、Tomcat、WebLogic等服务器进行Java Web的开发配置和部署。
4.熟悉Oracle、Sql Server ,了解MySQL等数据库应用开发。
5.熟练运用SVN、CVS版本控制工具进行项目的配置管理。
6.了解UML统一建模语言,能够使PowerDesigner等建模工具。
7.熟悉Linux的基本操作。
自我评价
为人诚恳、自信,工作中踏实、沉稳、积极进取且有耐心,具有良好的心理素质和抗压能力,能适应加班。
篇2:Android软件工程师个人简历
Android软件工程师个人简历模板
简历所选择的实践经历的必须要能凸显自己的个人优势,在个人简历中实践经历的篇幅最大,如果不能体现出个人优势,那么写在个人简历上就没有什么作用了。
个人信息
yjbys
性 别: 男
民 族: 汉族 年 龄: 26
婚姻状况: 未婚 专业名称: 电子信息工程
主修专业: 电子类 政治面貌: 团员
毕业院校: 福建师范大学 毕业时间: 6 月
最高学历: 本科 电脑水平: 精通
工作经验: 两年以上 身 高: 173 cm 体重:63公斤
现所在地: 厦门市 户 籍: 新罗区
求职意向
期望从事职业: Android软件工程师 期望薪水: 8000-10000
期望工作地区: 新罗区 福建厦门市 福建福州市 期望工作性质: 全职
最快到岗时间: 面谈 需提供住房: 不需要
教育/培训
教育背景:
学校名称: 龙岩一中 ( 9月 - 6月 )
专业名称: 基础教育 学历: 高中
所 在 地: 龙岩 证书:
学校名称: 福建师范大学 ( 209月 - 206月 )
专业名称: 电子信息工程 学历: 本科
所 在 地: 福州 证书:
培训经历:
工作经验
公司名称: 中企联(厦门)文化传媒有限公司 ( 1月 - 203月 )
所属行业: 互联网·电子商务 公司性质: 私营.民营企业
公司规模: 10~50人 工作地点: 厦门市
职位名称: Android软件工程师
工作描述: 项目名称:鱿鱼网(独立开发)
项目描述:专业的海产网上购物商城
项目架构实现:通过WebView加载h5界面实现的web app
离职原因: 公司原因
公司名称: 智亿佳(厦门)信息科技有限公司 ( 年3月 - 2015年9月 )
所属行业: 互联网·电子商务 公司性质: 私营.民营企业
公司规模: 10~50人 工作地点: 厦门市
职位名称: Android软件工程师
工作描述: 项目名称:百分孝心(2015.6-2015.9)
项目描述:该项目是一款养老服务类产品
项目架构实现及负责:通过封装roid-async-http和Hler实现网络请求;通过fastjson解析json数据;通过UIL显示网络图片;接入第三方SDK:高德地图、支付宝、友盟、环信、百度推送、ZXing。用户端我主要负责养老服务模块,从养老院列表、详情到预约支付生成订单,集成高德地图、支付宝、友盟、百度推送,以及一些其他基础界面的搭建及功能实现;员工端我主要负责基础架构,基本套用用户端的框架,集成ZXing二维码扫描和二维码生成,负责护工管理和医生管理模块开发
项目名称:快先森(2015.4-2015.6)
项目描述:一款集商品购买、商品速递于一体的服务管理平台,其中包括用户端、商家端、服务端、配送端
项目负责:主要负责用户端开发,主界面是由4个Fragment标签页组成;通过封装roid-async-http和Hler实现网络请求;通过gson解析json数据;通过UIL显示网络图片;接入第三方SDK:支付宝、友盟分享
项目名称:e采购(2015.3-2015.4)
项目描述:一款有针对性的高效率线上采购咨询询价平台
项目负责:主要负责界面搭建,相关接口调用及业务逻辑,选择图片上传功能
公司名称: 厦门市新店宝网络科技有限公司 ( 2015年9月 - 至今 )
所属行业: 互联网·电子商务 公司性质: 私营.民营企业
公司规模: 10~50人 工作地点: 厦门市
职位名称: Android软件工程师
工作描述: 项目名称:新店宝用户端及商家端
项目描述:新店宝是专业店面设计装修服务平台,通过新店宝,实体店铺雇主能够找到海量专业服务商,足不出户就能得到专业的店面设计装修、监理、现场、营销策划等服务
项目架构实现:主界面UI采用ViewPager嵌套Fragment实现滑动标签页,通过SlidingMenu和DrawerLayout实现侧滑菜单功能;通过封装xUtils和Hler实现网络请求;通过fastjson解析json数据;通过glide显示网络图片;通过WebSocket实现聊天功能;接入第三方SDK:支付宝、极光推送、TalkingData
自我评价
自我评价: 性格平和、稳重;待人真诚、友善;做事认真、负责
语言能力
语种名称 掌握程度
英语 良好
普通话 良好
拓展阅读:个人简历中的求职意向写作要点
求职者希望能写出优秀的个人简历,因为优秀的个人简历可以提高求职的成功率。而优秀的个人简历特点包括真实性、正面性、精炼性,求职者想要写出高水平的优秀简历,首先就要遵循个人简历写作要点。那么,个人简历的写作要点有哪些呢?
第一,要清晰明了
求职者在编写个人简历中的求职意向方面,要求清晰明了。你必须要明确的表达出自己想要从事什么工作,想要得到那个职位,想要在什么地方工作等等。在描述求职意向的时候也需要遵循简洁的原则,不能语言含糊不清绕一圈都不知道你的目标是什么。尽量不要使用统筹类诸如“管理职位”这种概念,要尽可能的直切主题。
第二,确定具体的单位、岗位
在个人简历中求职意向要是确定的、具体的,你要想求职的单位是什么,求职的岗位是哪个,这些都要准确的表达出来。具体的表达出自己的求职意向,可以让招聘官直接注意求职意向,并针对求职意向来看下面的内容。如此不仅能够节省对方阅读的.时间,还能提高印象分。
第三、还要保持一定的灵活性与弹性
在求职中所编写个人简历中的求职意向,还要能带有一些弹性,比如说求职某家公司的某项岗位,可以用某一类型的单位,或者某一类型的岗位。例如,应聘某商场的销售岗位,不要固定某项商品的销售,对方也可以根据商场的需要调剂到其他商品的销售柜台。
篇3:Android开发工程师个人简历
Android开发工程师个人简历模板
个人简历不能有所掺假,但是可以适当的包装,要知道价值与粉饰是优质简历必不可少的组成部分。
个人信息
yjbys
性 别: 男
民 族: 汉族 年 龄: 27
婚姻状况: 未婚 专业名称: 光电子
主修专业: 电子类 政治面貌: 群众
毕业院校: 福建信息职业技术学院 毕业时间: 6 月
最高学历: 大专 电脑水平: 精通
工作经验: 四年以上 身 高: 165 cm 体重:65公斤
现所在地: 新罗区 户 籍: 新罗区
求职意向
期望从事职业: java开发,Android开发,安卓 期望薪水: 8000-10000
期望工作地区: 新罗区 期望工作性质: 全职
最快到岗时间: 随时到岗 需提供住房: 不需要
教育/培训
教育背景:
学校名称: 福建信息职业技术学院 ( 9月 - 206月 )
专业名称: 光电子 学历: 大专
所 在 地: 福州 证书:
培训经历:
培训机构: 卓跃教育 ( 2015年10月 - 6月 )
课程名称: java/Android 证书:
课程描述: 主要4个阶段:
第一阶段java培训,项目:俄罗斯方块
第二阶段Android培训,项目:音乐播放器
第三阶段web培训,项目:驾校管理系统
第四阶段SIS框架培训,项目:牵手西湖
工作经验
公司名称: 福建夺宝联盟网络技术有限公司 ( 月 - 3月 )
所属行业: 互联网·电子商务 公司性质: 私营.民营企业
公司规模: 10人以下 工作地点: 福建龙岩
职位名称: Android开发工程师
工作描述: 负责Android项目开发
公司名称: 酒先来电子商务有限公司 ( 年6月 - 2016年10月 )
所属行业: 计算机软件 公司性质: 私营.民营企业
公司规模: 10~50人 工作地点: 龙岩
职位名称: Android开发工程师
工作描述: Android开发
离职原因: 公司内部股东问题,导致公司无法正常运行
公司名称: 福州富昌维控电子科技有限公司 ( 年6月 - 2015年8月 )
所属行业: 电子·微电子 公司性质: 私营.民营企业
公司规模: 50~200人 工作地点: 福州
职位名称: 维修部组长
工作描述: 担任维修部组长,主要负责维修部的管理,产品软硬件的维护。
自我评价
自我评价: 本人具有良好的团队沟通协调能力,抗压能力和多个项目开发经验。
语言能力
语种名称 掌握程度
英语 良好
普通话 良好
拓展阅读:如何来迎合用人单位的喜好来写个人简历
编写个人简历是求职者求职的第一步,也是最为关键的第一点,求职者所写的个人简历能够顺利的通过,则就离求职成功更近。因此,求职者们都非常重视个人简历的作用,想要写出优秀的个人简历,首先还需要知道什么样的个人简历是优秀的。
从个人简历的作用所得出的结论就是,能够让用人单位满意的个人简历就是优秀的。而让用人单位满意的个人简历,也必须要迎合对方的喜好。那么,如何来迎合对方的喜好来写呢?
第一,对企业公司有所了解
了解企业单位才能知道对方喜欢什么样的个人简历,以及企业最不待见的个人简历有哪些,不同性质的企业,不同个体的企业对简历的要求各有不同。那么在喜好上也就有很大的不同,比如说,有的企业喜欢看个人简历上的个人兴趣爱好,有的企业非常看重人才的学历,还有的企业则是单单重视工作经验。这些信息都是在对球儿公司有所了解的基础上获得。
第二,要改变自己编写个人简历的.思维方式
很多人在编写个人简历的时候,总是能让自己非常满意,但是一旦在求职中却又屡屡遭到打击。其中的原因主要就是在编写简历的思维方式上,总是以及自己的考量为主。要来迎合用人单位的喜好写个人简历,就要站在对方的角度来思考编写简历。
最后,还要注意简历的个性化,现在求职市场非常激烈,在个人简历的内同上要迎合对方的喜好,同时也要注意个人简历的个性化。
篇4:android软件测试工程师个人简历
android软件测试工程师个人简历模板
软件测试工程师主要是检查软件有没有错误,测试软件是否具有稳定性,写出相应的'测试规范和测试用例的专门工作人员,那么做一个专业的android软件测试工程师,怎么写个人简历模板?请看下面的android软件测试工程师个人简历模板吧。
| android软件测试工程师个人简历模板 |
篇5:CouchDB on Android
CouchDB的主要开发商Couch.io公司宣布发布了CouchDB SDK for Android,CouchDB SDK for Android 的目标是提供优秀的SDK,支持在Android设备上开发使用CouchDB作为本地数据存储的Web、本地和云计算应用程序,CouchDB使同步无所不在,它已经成为移动计算的重要组成部分,
项目主页:www.open-open.com/lib/view/home/1322727776187
篇6:Android onActivityResult
对于intent主要的分类主要包括隐式意图和显式意图,显式意图通常主要是启动本应用中的Activity之间的数据,
而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
一般来说:
显式意图:调用Intent.setComponent或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、
数据(URI和数据类型)找到最合适的组件来处理这个意图。
1、MainActivity里面的主要代码
(1)当需要返回值时,那么在启动另一个Activity时要用到startActivityForResult(intent, REQUEST_CODE);
注意第二个参数是请求的int类型的值,这个值要在onActivityResult()方法中和requestCode做判断的,
由此来判断是启动的某个Activity。
(2)onActivityResult()方法中的第二个参数就是SecondActivity传回来的键,
第三个参数就是SecondActivity传回来的键对应的值。
final int RESULT_CODE=101;final int REQUEST_CODE=1;
public void enterSecond(View view) {
Intent intent=new Intent(this,SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, onActivityResult+requestCode+requestCode+ resultCode=+resultCode);
if(requestCode==REQUEST_CODE) {
if(resultCode==RESULT_CODE) {
String result=data.getStringExtra(second);
textView.setText(result);
}
}
super.onActivityResult(requestCode, resultCode, data);
} 2、SecondActivity 类中的代码:
这个里面的RESULT_CODE、intent分别跟上段代码中onActivityResult()方法中的第二个、第三个参数相对应,
final int RESULT_CODE=101;
public void closeButton(View view) {
Intent intent=new Intent();
intent.putExtra(second, I am second!);
setResult(RESULT_CODE, intent);
finish();
} 3、除此之外,onActivityResult()方法中的第二个参数resultCode还有系统自带的一些参数,也就是说,如果我们启动的intent是隐式意图,那么可以用Activity类中RESULT_OK来表示操作已经顺利结束。
例如,调用系统图库的返回,请看代码:
final int CROP_PIC_REQUESTCODE = 23; final int SELECT_PICTURE = 21;
if (resultCode == RESULT_OK && requestCode == SELECT_PICTURE) {
System.out.println(调用图库返回,关闭activity);
Intent intent1 = new Intent(com.android.camera.action.CROP);
intent1.setDataAndType(data.getData(), image/*);
intent1.putExtra(crop, true);
intent1.putExtra(aspectX, 1);
intent1.putExtra(aspectY, 1);
intent1.putExtra(outputX, 80);
intent1.putExtra(outputY, 80);
intent1.putExtra(return-data, true);
startActivityForResult(intent1, CROP_PIC_REQUESTCODE);
}
篇7:android面试题
private TextView view_result;
private TextView view_suggest;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
setListensers();
}
// 定义
private void findViews() {
button_calc = (Button) findViewById(R.id.submit);
field_height = (EditText) findViewById(R.id.height);
field_weight = (EditText) findViewById(R.id.weight);
view_result = (TextView) findViewById(R.id.result);
view_suggest = (TextView) findViewById(R.id.suggest);
}
// Listen for button clicks
private void setListeners() {
calcbutton.setOnClickListener(calcBMI);
}
private Button.OnClickListener calcBMI = new Button.OnClickListener() {
public void onClick(View v) {
DecimalFormat nf = new DecimalFormat(“0.0”);
double height = Double.parseDouble(field_height.getText().toString()) / 100;
double weight = Double.parseDouble(field_weight.getText().toString());
double BMI = weight / (height * height);
// Present result
view_result.setText(getText(R.string.bmi_result) + nf.format(BMI));
// Give health advice
if (BMI >25) {
view_suggest.setText(R.string.advice_heavy);
} else if (BMI < 20) {
view_suggest.setText(R.string.advice_light);
} else {
view_suggest.setText(R.string.advice_average);
}
}
};
}
总结:
关于项目
在就是你项目经验,一定要突出你遇到什么难点,然后是怎么解决的!把问题引导到你熟悉的领域,或者知识点上,尽量将每个技术点细节凸显出来,
心态:
什么样的面试官都有,去面试的时候要做好一切心理准备,不管是技术还是基础都得扎实。一个人的交谈能力也很重要,总之不是非常标准的普通话, 最起码你说的得让别人听得懂,而且得把面试官讲得非常彻底,这样你获得offer的机会更大,谈工资也有优势~~
篇8:android面试题
Intent intent = new Intent(this,B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
局限性 :所有的activity的启动模式都要是默认的启动模式
讲一讲你对activity的理解
把上面的几点用自己的心得写出来
8. service是否在main thread中执行, service里面是否能执行耗时的操作?
默认情况,如果没有显示的指定service所运行的进程, Service和activity是运行在当前app所在进程的main thread(UI主线程)里面
service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件 )
在子线程中执行 new Thread{}.start();
特殊情况 ,可以在清单文件配置 service 执行所在的进程 ,让service在另外的进程中执行
9. 两个Activity之间怎么传递数据?
基本数据类型可以通过. Intent 传递数据
extras.putDouble(key, value)
intent.putExtra(name, value)
// 通过intent putExtra 方法 基本数据类型 都传递
Bundle bundle = new Bundle();
bumdle.putShort(key, value);
intent.putExtras(bundle);
intent.putExtras(bundle)
获取到激活他的 getIntent();
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
intent.getStringExtra(“key”,“value”);
intent.getBooleanExtra(“key”,“value”)
Application 全局里面存放 对象 ,自己去实现自己的application的这个类,基础系统的application , 每个activity都可以取到
让对象实现 implements Serializable 接口把对象存放到文件上.
让类实现Serializable 接口,然后可以通过 ObjectOutputStream //对象输出流
File file = new File(“c:\\1.obj”);
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Student stu = new Student();
stu.setId(“10001”);
stu.setName(“zs”);
oos.writeObject(stu);
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
Student stu1 = (Student) ois.readObject();
System.out.println(stu1.getName());
Parcelable 和 Serializable
Parcelable 把对象序列化到android操作系统 的一块公用的内存空间
文件/网络
intent.setData(Uri)
Uri.fromFile(); //大图片的传递
contentResolver.getInputStream(url);
10. 怎么让在启动一个Activity是就启动一个service?
在activity的onCreate()方法里面 startService();
11. 同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?
比方说在激活一个新的activity时候, 给intent设置flag
Intent的flag添加FLAG_ACTIVITY_NEW_TASK
这个被激活的activity就会在新的task栈里面…
Intent intent = new Intent(A.this,B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
12. Activity怎么和service绑定,怎么在activity中启动自己对应的service?
startService() 一旦被创建 调用着无关 没法使用service里面的方法
bindService () 把service 与调用者绑定 ,如果调用者被销毁, service会销毁
bindService() 我们可以使用service 里面的方法
bindService(). 让activity能够访问到 service里面的方法
构建一个intent对象,
Intent service = new Intent(this,MyService.class);
通过bindService的方法去启动一个服务,
bindService(intent, new MyConn(), BIND_AUTO_CREATE);
ServiceConnection 对象(重写onServiceConnected和OnServiceDisconnected方法) 和BIND_AUTO_CREATE.
private class myconn implements ServiceConnection
{
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
//可以通过IBinder的对象 去使用service里面的方法
}
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
13. 14 .什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service?
在Service的生命周期中,被回调的方法比Activity少一些,只有onCreate, onStart, onDestroy,
onBind和onUnbind。
通常有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate 到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。
如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
2 通过bindService
Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind->onDestroyed方法。
所谓绑定在一起就共存亡了。调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->onDestroyed方法。
篇9:android面试题
如果后台的activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
如何将一个activity设置成窗口的样式。(edited by sodino)
如何退出activity?如何安全退出已调用多个activity的application?
请介绍下android中常用的五种布局。
请介绍下android的数据存储方式。(edited by sodino)
请介绍下contentprovider是如何实现数据共享的。(edited by sodino)
如何启用service,如何停用service。(edited by sodino)
注册广播有几种方式,这些方式有何优缺点?请谈谈android引入广播机制的用意。
请解释下在单线程模型中message、handler、message queue、looper之间的关系。
aidl的全称是什么?如何工作?能处理哪些类型的数据?
请解释下android程序运行时权限与文件系统权限的区别。(edited by sodino)
系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。
嵌入式操作系统内存管理有哪几种,各有何特性 ?
页式,段式,段页,用到了mmu,虚拟空间等技术
什么是嵌入式实时操作系统, android 操作系统属于实时操作系统吗?
嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。
一条最长的短信息约占多少byte?
中文70(包括标点),英文160个字节
android中的动画有哪几类,它们的特点和区别是什么?
两种,一种是tween动画、还有一种是frame动画。tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
handler机制的原理
andriod提供了 handler 和 looper 来满足线程间的通信。handler 先进先出原则。looper类用来管理特定线程内对象之间的消息交换(message exchange)。 1)looper: 一个线程可以产生一个looper对象,由它来管理此线程里的message queue(消息队列)。 2)handler: 你可以构造handler对象来与looper沟通,以便push新消息到message queue里;或者接收looper从message queue取出)所送来的消息。 3) message queue(消息队列):用来存放线程放入的消息。 4)线程:ui thread 通常就是main thread,而android启动程序时会替它建立一个message queue。
说说mvc模式的原理,
它在android中的运用 mvc(model_view_contraller)” 模型_视图_控制器”。 mvc应用程序总是由这三个部分组成。event(事件)导致controller改变model或view,或者同时改变两者。只要 controller改变了models的数据或者属性,所有依赖的view都会自动更新。类似的,只要controller改变了view,view会 从潜在的model中获取数据来刷新自己
(view重绘和内存泄露面试经常问的问题 )
view的刷新:
在需要刷新的地方,使用handle.sendmessage发送信息,然后在handle的getmessage里面执行invaliate或者postinvaliate。
可以调用invalidate()和postinvalidate()这两个方法刷新
gc内存泄露 出现情况:
1).数据库的cursor没有关闭
2).构造adapter时,没有使用缓存contentview 衍生listview的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/
3).bitmap对象不使用时采用recycle()释放内存
4).activity中的对象的生命周期大于activity 调试方法: ddms==>heapszie==>dataobject==>[total size]
篇10:android面试题
一条最长的短信息约占多少byte?
中文70(包括标点),英文160个字节
android中的动画有哪几类,它们的特点和区别是什么?
两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
handler机制的原理
andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。 1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。 2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。 3) Message Queue(消息队列):用来存放线程放入的消息。 4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。
说说mvc模式的原理,
它在android中的运用 MVC(Model_view_contraller)” 模型_视图_控制器”。 MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要 Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会 从潜在的Model中获取数据来刷新自己
(View重绘和内存泄露面试经常问的问题 )
View的刷新:
在需要刷新的地方,使用handle.sendmessage发送信息,然后在handle的getmessage里面执行invaliate或者postinvaliate。
可以调用invalidate()和postInvalidate()这两个方法刷新
GC内存泄露 出现情况:
1).数据库的cursor没有关闭
2).构造adapter时,没有使用缓存contentview 衍生listview的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/
3).Bitmap对象不使用时采用recycle()释放内存
4).activity中的对象的生命周期大于activity 调试方法: DDMS==>HEAPSZIE==>dataobject==>[Total Size]
文档为doc格式