Android面试整理

  1. RecyclerView的上拉加载、下拉刷新怎么实现?RecyclerView原生实现侧滑、拖动?
  • 上拉加载、下拉刷新
    总结:上拉加载更多功能实际上就是给RecyclerView增加一个FooterView,然后通过判断是否滑动到了最后一条Item,来控制FooterView的显示和隐藏。下载刷新同理。
  • 侧滑和拖动:拖拽和侧滑删除的功能要借助ItemTouchHelper这个类,我们只需要创建出一个ItemTouchHelper对象,然后调用mItemTouchHelper.attachToRecyclerView(recyclerView);就可以了。
    我们看一下ItemTouchHelper的构造方法,他需要一个Callback
    public ItemTouchHelper(Callback callback) {
        mCallback = callback;
    }

这个Callback是ItemTouchHelper的内部类,所以我们需要写一个类继承自ItemTouchHelper.Callback ,然后重写里面的方法

  1. 数据的各种存储方式
    (1)SharedPreferences。适用于保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息、解锁口令密码等。
    (2)文件存储数据 。文件存储方式是一种较常用的方法,在 Android 中读取/写入文件的方法,与 Java 中实现 I/O 的程序是完全一样的,提供了 openFileInput()和openFileOutput()方法来读取设备上的文件。
    (3)SQLite数据库存储数据。SQLite 是 Android 所带的一个标准的数据库,它支持SQL 语句,它是一个轻量级的嵌入式数据库。
    (4)使用ContentProvider存储数据。主要用于应用程序之间进行数据交换,从而能够让其他的应用保存或读取此 Content Provider 的各种数据类型。
    (5)网络存储数据。通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储在网络空间中的数据信息。
  2. 断点续传下载,续传上传
    多线程下载的原理实际上与单线程下载的原理并无区别。
  • 首先,多线程下载只需要确定好下载一个文件需要多少个线程,一般来说最好为3条线程,因为线程过多会占用系统资源,而且线程间的相互竞争也会导致下载变慢。
  • 然后,下载的时候将文件分割为三份(假设用3条线程下载)下载。创建与下载文件同样大小的空壳文件RandomAccessFile,它的开始结束为止用以下代码conn.setRequestProperty("Range", "bytes=" + start + "-" + end)确定。
  • 最后就是断点续传了,只需要才程序停止下载的时候记录下最后的下载位置就好了,当下次下载的时候从当前停止的位置开始下载。
  1. app在断网情况下怎么保存用户信息(数据缓存)
    Android客户端缓存机制是android应用开发中非常重要的一项工作了,使用缓存机制不仅可以为客户节省流量,同时提高了用户体验。分为文字缓存和多媒体文件缓存。
    首先是文字缓存:将服务器交互得到的json数据存入sd卡中,并在数据库添加该数据的记录。添加数据库记录时,可以提供2个字段,请求到的Url和本地保存后的文件地址,每次加载数据之前都会根据Url在数据库中检索。
    然后是媒体文件缓存:主要是图片三级缓存,现在流行的图片加载框架都支持三级缓存。如果是自己实现三级缓存,主要 用到的Lrucache。

  2. Activity现场保存,现场恢复

  • 现场保存:重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。
  • 现场恢复:通过重写 onRestoreInstanceState()方法可以从中提取保存好的数据
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、java部分 String、StringBuffer与StringBuilder之间区别http://www....
    挨踢小能手阅读 683评论 0 24
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 1.Android系统的架构 Android采用层次化系统架构,官方公布的标准架构如下图所示。Android由底层...
    大弃阅读 1,676评论 0 11
  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,266评论 2 54
  • 对于这个来自西方的节日,老土的竟没怎么太在意过。重点来了……今年的这个愚人节因为参加了 ‘好报’的一月写字小组...
    灿烂阳光下阅读 135评论 0 0