1、handler 与Looper 与MessageQueue 、Message关系

handler:是处理主线程(ui线程)处理耗时操作的线程,通过post message到MessageQueue队列中。使用handler须要实现 handlerMessage方法,通过更新主线程ui

Looper:每一个Looper相应一个MessageQueue,在handler之前Looper.prepare()会初始化looper和MessageQueue。最后Looper.loop方法会去循环分发message到指定的handler,改api方法中有一句 msg.target.dispatchMessage(msg);
  这就是looper和handler之间的调用

2、hander与 AsyncTask的优缺点 

AsyncTask实现的原理和适用的优缺点

AsyncTask,是android提供的轻量级的异步类,能够直接继承AsyncTask,在类中实现异步操作,提供接口反馈当前异步运行的程度(能够通过接口实现UI进度更新),最后反馈运行的结果给UI主线程.

使用的长处:

简单,快捷

过程可控

使用的缺点:

在使用多个异步操作和并须要进行Ui变更时,就变得复杂起来.

Handler异步实现的原理和适用的优缺点

在Handler 异步实现时,涉及到 Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)执行并生成Message-Looper获取Message并传递给HandlerHandler逐个获取Looper中的Message,并进行UI变更。

使用的长处:

结构清晰,功能定义明白

对于多个后台任务时。简单,清晰

使用的缺点:

在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)

3、android里面几种常见的存储方式

a、Content provider

1) ContentProvider为存储和读取数据提供了统一的接口

2) 使用ContentProvider,应用程序能够实现数据共享

3) android内置的很多数据都是使用ContentProvider形式,供开发人员调用的(如视频,音频。图片,通讯录等)

首先在Androidmanifest.xml中注冊provider权限,然后通过getContentResolver() 然后得到contentResolver()对象 能够对该应用进行类似数据库操作一样的增删改成,须要的參数是uri  和參数值,查询一般得到游标Cursor
 通过遍历游标获取属性值

b、SharedPreferences

实际上SharedPreferences处理的就是一个key-value(键值对)。SharedPreferences经常使用来存储一些轻量级的数据.
通过getSharedPreferences()得到改SharedPreferences对象  然后得到edit对象用来put值到改对象中。最后须要edit.commit()来将改对象存储到文件里,最后是以文件形式保存在data/data的指定路径下

c、sqlite存储

SQLite是一种轻量级的小型数据库,尽管比較小,可是功能相对照较完好,一些常见的数据库基本功能也具有,在如今的嵌入式系统中使用该数据库的比較多。由于它占用系统资源非常少

须要继承SQLiteOpenHelper 然后helper.getWritableDatabase() 得到SQLiteDatabase 对象,该对象能够对数据进行增删改查操作,提供了key value形式的CURD方法

d、io流存储

e、webview网络存储

4。listview你是怎么优化的。

用viewHolder和convertview优化内存,降低view的实例化个数,当item1被滑出屏幕时。这时不须要创建新的item1的view实例,android里面提供了Recycler(重复循环器)构件,并且viewHolder是静态类,最快的方式是定义一个ViewHolder,将convetView的tag设置为ViewHolder,不为空时又一次使用就可以。

4.1,listview图片载入优化

1. decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完毕decode。

无需再使用java层的createBitmap,从而节省了java层的空间,而且设置图片的压缩比例,从而缩小内存使用

InputStream is =
this.getResources().openRawResource(R.drawable.pic1);

BitmapFactory.Options options=new BitmapFactory.Options();

options.inJustDecodeBounds = false;

options.inSampleSize = 10; //width。hight设为原来的十分一

Bitmap btp =BitmapFactory.decodeStream(is,null,options);,

2.回收图片缓存

if(!bmp.isRecycle()
){

bmp.recycle() //回收图片所占的内存

system.gc() //提醒系统及时回收

}





5,view的刷新,之前说过

      View 能够调用invalidate()和postInvalidate()这两个方法刷新

6,IPC及原理



7,Android多线程



8。Android为什么要设计4大组件,他们之间的联系。不设计行不行(主要是为了实现MVC模式。然而java中最难的模式也是这个,非常少有产品能将这个模式做得非常好【Technicolor的面试官问的这个】)



9,service的周期。activity的周期,谈下你对Android内部应用的了解,比方他做电话,以及联系人等等应用。框架层有非常多东西还是多看看。熟悉Android怎么做的,无论你做应用程开发还是应用框架层开发非常有优点。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

android关键知识的更多相关文章

  1. [转]【eoeAndroid索引】史上最牛最全android开发知识汇总

    一.开发环境搭建 (已完成) 负责人:kris 状态:已完成 所整理标签为:搭建 SDK JDK NDK Eclipse ADT 模拟器 AVD 调试器(DEBUG) DDMS 测试 日志 Logca ...

  2. Xamarin Android教程Android基本知识版本介绍与系统介绍

    Xamarin Android教程Android基本知识版本介绍与系统介绍 Xamarin Android教程Android基本知识版本介绍与系统介绍,开发Andriod有时候不像iOS一样轻松,因为 ...

  3. iOS之UI--通讯录的实例关键知识技术点积累

    通讯录的实例关键知识技术点积累 效果展示: 作为博文笔记,既然是笔记,目的是为了能够以后做这个项目能够快速上手,如果这是我下一次阅览这个博文笔记,那么我应该先空手从零开始做,需求也就是这个项目的展示效 ...

  4. Android基本知识

         Android是Google公司于2007年发布的基于Linux内核的手机操作系统.应用层主要以java为编程语言,应用层分为两层,函数层(Library) 和虚拟机(Virtual).中间 ...

  5. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  6. 第01讲- Android背景知识

    第01讲Android背景知识 Android是基于Linux系统 Android系统框图 : 第一.操作系统层(OS) 第二.各种库(Libraries)和Android 运行环境(RunTime) ...

  7. 写给Android App开发人员看的Android底层知识(1)

    这个系列的文章一共8篇,我酝酿了很多年,参考了很多资源,查看了很多源码,直到今天把它写出来,也是战战兢兢,生怕什么地方写错了,贻笑大方. (一)引言 早在我还是Android菜鸟的时候,有很多技术我都 ...

  8. 打造自己的Android常用知识体系

    前言 Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理.注意哦,不是Android知识体系. 古语道:学而不思则罔,思而不学则殆.如果将做项目类比为“ ...

  9. android基本知识(一)

    今天开始更新一下android的基本知识,下面是敲代码遇到的问题. 1)我们来谈谈android.intent.category.DEFAULT的用途.     在谈这个tag的用途之前,读者要明白什 ...

随机推荐

  1. hdu5124(树状数组+离散化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:有n条线段,求被覆盖到次数最多的点的次数 分析: 1.可以转化成求前缀和最大的问题:将区间 ...

  2. Androidclient和server端数据交互的第一种方法

    网上有非常多样例来演示Android客户端和server端数据怎样实现交互只是这些样例大多比較繁杂,对于刚開始学习的人来说这是不利的.如今介绍几种代码简单.逻辑清晰的交互样例,本篇博客介绍第一种: 一 ...

  3. sys_refcursor的使用方法实例

    --创建过程,參数为sys_refcursor,为out型 create or replace procedure aabbsys_refcursor(o out sys_refcursor) is ...

  4. zoj1610(线段树)

    题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 题意:在0-8000长的线段里面,按先后次序依次覆盖颜色, ...

  5. poj 3172 Scales 搜索

    其实这个题目要是注意到了题目的一点关键性的描述就会变得很简单,题意是给出的砝码是至少是前两个的和的,有了这一点,那么砝码的数量应该就在几十左右,这样的话适当剪枝的搜索是应该可以过的. #include ...

  6. IOS开发笔记 - 基于wsdl2objc调用webservice

    为了方便在ios下调用webserivce,找来了wsdl2objc这样一个开源的框架来解析webservice方便在ios下引用. 下面做个小例子. 1.首先是用Asp.net搭建一个测试的webs ...

  7. Java虚拟机几个命令行参数说明

    一.运行class文件 执行带main方法的class文件,Java虚拟机命令参数行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: java ...

  8. Visual Studio跨平台开发实战(1) - Hello Xamarin!

    原文 Visual Studio跨平台开发实战(1) - Hello Xamarin! 前言 应用程式发展的脚步, 从来没有停过. 从早期的Windows 应用程式, 到网路时代的web 应用程式, ...

  9. SQL Server :理解数据页结构

    原文:SQL Server :理解数据页结构 我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或 ...

  10. Coco2dx-3.0中怎样调用LUA

    一个用3.0的工具导出类到lua,自己主动生成代码的方法. 曾经要导出c++类到lua.就得手动维护pkg文件,那简直就是噩梦.3.0以后就会感觉生活非常轻松了. 以下我就在说下详细做法. 1.安装必 ...