`
aking86
  • 浏览: 83115 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 资料

 
阅读更多

 

 

1.view如何刷新?简述什么是双缓冲?
android中实现view的更新有两个方法,一个是invalidate,另一个是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。

双缓冲
闪烁是图形编程的一个常见问题。当进行复杂的绘制操作时会导致呈现的图像闪烁或具有其他不可接受的外观。双缓冲的使用解决这些问题。双缓冲使用内存缓冲区来解决由多重绘制操作造成的闪烁问题。当使用双缓冲时,首先在内存缓冲区里完成所有绘制操作,而不是在屏幕上直接进行绘图。当所有绘制操作完成后,把内存缓冲区完成的图像直接复制到屏幕。因为在屏幕上只执行一个图形操作,所以消除了由复杂绘制操作造成的图像闪烁问题。
在android中实现双缓冲,可以使用一个后台画布backcanvas,先把所有绘制操作都在这上面进行。等图画好了,然后在把backcanvas拷贝到
与屏幕关联的canvas上去,如下:
Bitmap bitmapBase = new Bitmap()
Canvas backcanvas = new Canvas(bitmapBase)
backcanvas.draw()...//画图

Canvas c = lockCanvas(null);
c.drawbitmap(bitmapBase);//把已经画好的图像输出到屏幕上
unlock(c)....


2.Dalvik和标准Java虚拟机之间的主要差别?
Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。
Dalvik和Java之间的另外一大区别就是运行环境——Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik应用作为一个独立的Linux进程执行。
(1)虚拟机很小,使用的空间也小;
(2)Dalvik没有JIT编译器;
(3)常量池已被修改为只使用32位的索引,以简化解释器;
(4)它使用自己的字节码,而非Java字节码。

3. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗?
这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT 、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK 等。

4.android中的动画有哪几类,它们的特点和区别是什么?
  两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

5.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。


6.简要解释一下activity、 intent 、intent filter、service、Broadcase、BroadcaseReceiver
  答:一个activity呈现了一个用户可以操作的可视化用户界面
  一个service不包含可见的用户界面,而是在后台无限地运行
  可以连接到一个正在运行的服务中,连接后,可以通过服务中暴露出来的借口与其进行通信
  一个broadcast receiver是一个接收广播消息并作出回应的component,broadcast receiver没有界面
  intent:content provider在接收到ContentResolver的请求时被激活。
  activity, service和broadcast receiver是被称为intents的异步消息激活的。
一个intent是一个Intent对象,它保存了消息的内容。对于activity和service来说,它指定了请求的操作名称和待操作数据的URI
  Intent对象可以显式的指定一个目标component。如果这样的话,android会找到这个component(基于manifest文件中的声明)并激活它。但如果一个目标不是显式指定的,android必须找到响应intent的最佳component。
  它是通过将Intent对象和目标的intent filter相比较来完成这一工作的。一个component的intent filter告诉android该component能处理的intent。intent filter也是在manifest文件中声明的。

7.IntentService有何优点?
  答:IntentService 的好处
   * Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
   * Android的进程处理器现在会尽可能的不kill掉你
   * 非常容易使用
8.Android引入广播机制的用意?
  答:a:从MVC的角度考虑(应用程序内)
  其实回答这个问题的时候还可以这样问,android为什么要有那4大组件,现在的移动开发模型基本上也是照搬的web那一套 MVC架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间 有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。
   b: 程序间互通消息(例如在自己的应用程序内监听系统来电)
   c:效率上(参考UDP的广播协议在局域网的方便性)
   d:设计模式上(反转控制的一种应用,类似监听者模式)

9.如何将打开res aw目录中的数据库文件?
  解答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res aw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

10. 1、什么是ANR 如何避免它?
  答:ANR:Application Not Responding,五秒在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。当出现下列情况时,Android就会显示ANR对话框了:
  对输入事件(如按键、触摸屏事件)的响应超过5秒
  意向接受器(intentReceiver)超过10秒钟仍未执行完毕
  Android应用程序完全运行在一个独立的线程中(例如main)。这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intent broadcast)。
  因此,任何运行在主线程中的方法,都要尽可能的只做少量的工作。特别是活动生命周期中的重要方法如onCreate()和 onResume()等更应如此。潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,需要在一个单独的子线程中完成(或者是使用异步请求,如数据库操作)。但这并不意味着你的主线程需要进入阻塞状态已等待子线程结束 -- 也不需要调用Therad.wait()或者Thread.sleep()方法。取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它(xing:可以参看Snake的例子,这种方法与以前我们所接触的有所不同)。使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,从而避免因为输入事件超过5秒钟不被处理而产生的ANR。这种实践需要应用到所有显示用户界面的线程,因为他们都面临着同样的超时问题。







  • Tab.rar (49.2 KB)
  • 下载次数: 1
  • 大小: 21.7 KB
分享到:
评论

相关推荐

    android资料android资料

    android资料android资料android资料android资料android资料android资料

    android资料大全

    【Android资料大全】 在Android开发领域,理解和掌握其基本框架是至关重要的。这份"Android资料大全"涵盖了Android系统的核心组成部分,特别关注了源码解析和工具应用,旨在帮助开发者深入理解这一平台的工作原理,...

    android资料库

    "Android资料库"提供了一套全面的学习资源,旨在帮助初学者从零开始逐步深入理解Android平台。这份资料库涵盖了从入门到精通的各个阶段,确保学习者能够系统地掌握Android开发的核心概念和技术。 首先,Android入门...

    Android 资料以及实例源码集合

    首先,Android资料部分可能包括官方文档、教程、指南、博客文章、电子书等。这些资料能够帮助开发者从基础到高级全面了解Android系统和应用开发。例如,官方文档详细解释了Android SDK、Android Studio的使用、布局...

    android资料,运行原理过程

    本资料包"android资料,运行原理过程"专注于揭示Android系统的运行机制和开发流程。 一、Android系统运行过程 1. 启动流程:Android系统的启动始于Bootloader,接着是Kernel加载,然后是System Server启动,最后是...

    Android,Android资料大全,Android文档

    这个“Android,Android资料大全,Android文档”压缩包很可能包含了关于Android开发和学习的全面资源,包括但不限于API指南、开发工具使用教程、示例代码、设计规范以及最佳实践。 1. **Android API指南**:Android...

    Android资料打包下载

    以下是关于"Android资料打包下载"的相关知识点,基于提供的文件名,我们可以推断出涉及的主要内容包括Android应用框架原理、程序设计以及Google手持设备的应用。 1. **Android应用框架原理**:Android应用框架是...

    android资料合集2

    【Android资料合集2】是针对Android开发人员和学习者的一份综合资源包,涵盖了从基础知识到高级概念的多个方面。这份合集包括了以下四个关键部分: 1. ** Beginning_Android **:这本书可能是Android开发的入门教程...

    android资料合集3

    【Android资料合集3】是针对Android开发人员和学习者精心整理的一份资源集合,它涵盖了从基础到进阶的Android编程知识。这份合集主要包括两部分:《eoeAndroid特刊》和《Android_Programming》PDF文档,旨在帮助读者...

    OpenCV入门教程及Opencv4Android资料

    这个入门教程及Opencv4Android资料旨在帮助初学者理解和掌握如何在Android平台上利用OpenCV进行图像处理和计算机视觉应用开发。 OpenCV入门教程会详细讲解计算机视觉的基础概念,包括图像获取、图像处理基本操作...

    android资料及相关教程

    这份"android资料及相关教程"的压缩包文件,显然是为那些想要学习或提升Android开发技能的人准备的。下面将详细阐述Android开发的一些核心知识点。 一、Android系统架构 Android系统由四层构成:Linux内核、系统库...

    android资料堆.rar

    "android资料堆.rar"这个压缩包文件很可能包含了关于Android开发的各类资源,包括教程、代码示例、API文档、设计指南等,这些都是学习和提升Android技术的重要素材。下面,我将根据这些信息为你详细解析Android开发...

    Android资料专题.zip

    这份名为"Android资料专题.zip"的压缩包集合了丰富的Android学习资源,旨在帮助开发者提升技能并顺利通过面试。以下是其中包含的一些关键知识点: 1. **腾讯Android社招面试源码相关11题+原理详解.docx**:此文档...

Global site tag (gtag.js) - Google Analytics