课程咨询 : 010-57154533

主页 > 无限新闻 > 鸿运彩票网Android培训技术学院:Android基础学习
  • 鸿运彩票网Android培训技术学院:Android基础学习

    发布:鸿运彩票网Android培训      来源:鸿运彩票网Android培训      时间:2016-12-22 11:53

  •   鸿运彩票网Android培训技术学院为大家精选Android学习基础知识。鸿运彩票网Android培训技术学院(原鸿运彩票网Android培训技术学院)面向0基础,4个月学习即可让你步入Android开发世界,让你成为不一样的程序员!挑战高薪,从此刻做起。

      1、Android基础学习:触屏事件分发机制

      (1)ViewGroup和View组成了一棵树形结构,最顶层为Activity的ViewGroup,下面有若干的ViewGroup节点,每个节点之下又有若干的ViewGroup节点或者View节点。

      (2)当一个Touch事件到达根节点,即Acitivty的ViewGroup时,它会依次下发,下发的过程是调用子View(ViewGroup)的dispatchTouchEvent方法实现的。简单来说,就是ViewGroup遍历它包含着的子View,调用每个View的dispatchTouchEvent方法,而当子View为ViewGroup时,又会通过调用ViwGroup的dispatchTouchEvent方法继续调用其内部的View的dispatchTouchEvent方法。

      (3)ViewGroup的dispatchTouchEvent是真正在执行分发工作,而View的dispatchTouchEvent方法,并不执行分发工作,或者说它分发的对象就是自己,决定是否把touch事件交给自己处理,而处理的方法,便是onTouchEvent事件。

    鸿运彩票网Android培训技术学院:Android基础学习
    鸿运彩票网Android培训技术学院:Android基础学习

      2、Android基础学习:什么是ANR,如何避免它?

      答:ANR:Application Not Responding(应用程序无响应)。在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当用户操作在5s内应用程序没有响应,BroadcastReceiver在10秒内没有执行完毕,就会出现应用程序无响应对话框。

      ANR的分类

      KeyDispatchTimeout(5 seconds) –主要情况 :按键或触摸事件在特定时间内无响应

      BroadcastTimeout(10 seconds) :BroadcastReceiver在特定时间内无法处理完成

      ServiceTimeout(20 seconds) –小概率类型 :Service在特定的时间内无法处理完成

      ANR的解决和避免方法

      (1)Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。

      (2)耗时的操作,例如网络或数据库操作,应该在子线程里完成。

      (3)应用程序应该避免在BroadcastReceiver里做耗时的操作或计算。

      3、Android基础学习:Android基础学习:什么情况会导致Force Close?

      答:程序出现异常,比如NullPointerException。

      4、Android基础学习:Android基础学习:谈谈常见OOM的原因和解决办法?

      OOM原因

      1. 网络加载大量图片

      2. 资源对象没关闭造成的内存泄露

      解决办法

      1. 适当调整图像大小

      2. 使用图像缓存

      3. 及时回收图像

      4.自定义堆内存分配大小,优化Dalvik虚拟机的堆内存分配。

      5、Android基础学习:Android加载网络图片,如何实现,如何优化避免出现OOM,(完全自定义,不需要使用第三方工具包)

      1.三级缓存

      2.使用线程池来管理加载的图片的线程

      3.LruCache来管理我们图片内存

      //图片缓存技术的核心类,用于缓存所有下载好的图片,在程序内存达到设定值时会将最少最近使用的图片移除掉。

      private static LruCache mMemoryCache;

      private static ImageLoader mImageLoader;

      private ImageLoader() {

      // 获取应用程序最大可用内存

      int maxMemory = (int) Runtime.getRuntime().maxMemory();

      int cacheSize = maxMemory / 8;

      // 设置图片缓存大小为程序最大可用内存的1/8

      mMemoryCache = new LruCache(cacheSize) {

      @Override

      protected int sizeOf(String key, Bitmap bitmap) {

      return bitmap.getByteCount();

      }

      };

      }

      关键词标签:Android培训,Android学习,Android开发学习,Android技术学院


上一篇:时下最热门IT行业岗位是?Android开发?

下一篇:Android培训专家预测2017年安卓发展趋势

最新开班日期

开班时间 2017/02/20
距离开班时间还剩

1 2 3
©2016 鸿运彩票网 版权所有 京ICP备15049804-3号