
Android
文章平均质量分 83
#Ekko
干就完事了
展开
-
[Android]RecyclerView基本使用+adapter回调接口实现点击事件
一、概述RrcyclerView是ListView的加强版,不仅可以轻松实现和ListView同样的效果,还优化了ListView中存在的各种不同之处。Android官方推荐我们使用RecyclerView。二、基本用法1.首先需要在项目的build.gradle中添加相应的依赖库:implementation 'com.android.support:recyclervie...原创 2018-08-14 18:20:20 · 4643 阅读 · 6 评论 -
[Android]Handler运行机制
本文转自 : https://blog.youkuaiyun.com/u012827296/article/details/51236614[Android]Handler引起内存泄漏的原因以及解决办法Handler的作用:当我们需要在子线程处理耗时的操作(例如访问网络,数据库的操作),而当耗时的操作完成后,需要更新UI,这就需要使用Handler来处理,因为子线程不能做更新UI的操作。Handl...转载 2018-12-24 13:50:12 · 272 阅读 · 0 评论 -
[Android]Java引用:强引用|软引用|弱引用|虚引用
在学习Handler时,发现Handler容易引起内存泄漏,解决办法就是采用弱引用。通过学习,那就总结一下四种引用。强引用 软引用 弱引用 虚引用从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能够更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用、虚引用。强引用我们使用的大部分引用实际上都都是强引用,例如:Object obj...原创 2018-12-24 21:39:33 · 220 阅读 · 0 评论 -
[Android]Handler引起内存泄漏的原因以及解决办法
什么是内存泄漏Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收。另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相持有引用,但没有任何外部对象持有指向A或B的引用),这仍然属于不可到达,...原创 2018-12-25 00:01:21 · 1068 阅读 · 0 评论 -
[Android]ListView优化
ListView的几种优化方式convertView的复用第一种优化就是重用convertView,这也是最简单的一种优化方式,就是在Adapter类的getView方法中通过判断convertView是否为null,是的话就需要在创建一个视图出来,然后给视图设置数据,最后将这个视图返回给底层,呈现给用户;如果不为null的话,其他新的view可以通过复用的方式使用已经消失的条目view,...原创 2018-12-25 15:40:19 · 190 阅读 · 0 评论 -
[Android]内存泄漏的几种方式
什么是内存泄漏?为什么会发生内存泄漏?参见 [Android]Handler引起内存泄漏的原因以及解决办法Android开发中最常见的5个内存泄漏一、单例模式造成的内存泄漏单例模式的静态特性会使其生命周期和应用程序的生命周期一样长,说明当一个对象不再使用了,本该被GC回收,但是单例对象还在持有着该对象的引用,这时GC就无法回收该对象,造成内存泄漏。问题代码:public ...原创 2018-12-26 10:58:22 · 844 阅读 · 0 评论 -
[Android] IntentService
IntentService是什么本质是一种特殊的Service,继承自Service并且本身是一个抽象类,优先级高于Service。 它可以在后台执行耗时的异步任务,任务完成后会自动停止。 它拥有较高的优先级,不易被系统杀死(因为继承Service),因此比较适合执行一些高优先级的异步任务。 它背部通过HandlerThread和Handler实现异步操作。 创建IntentServi...原创 2019-01-01 20:52:08 · 282 阅读 · 0 评论 -
[Android]HandlerThread
HandlerThread特点HandlerThread本身是一个线程类,它继承了Thread HandlerThread有自己内部Looper对象,可以进行Looper循环 通过获取HandlerThread的Looper对象并传递给Handler对象,可以在handleMessage方法中执行异步任务 创建HandlerThread后必须先调用HandlerThread.start(...原创 2019-01-02 17:29:36 · 643 阅读 · 0 评论 -
[Android]单例模式总结
什么是单例模式因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象。作用:保证1个类只有1个对象,降低对象之间的耦合度。优点:提供了对唯一实例的受控访问 由于在系统中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象,采用单例模式可以提高系统的性能。缺点:单例类的职责过重,里面的代码可能会过于复杂,在一定程度上违背了“单一职责原则”; ...转载 2018-12-26 23:58:06 · 354 阅读 · 0 评论 -
[Android]Tablayout:修改指示器indicator的宽度
一、问题描述:最近接触到了Tablayout,需求是要把Tablayout的下划线宽度缩短,或者说使其可以进行自定宽度。百度上面大多数利用反射,(具体可百度查询),这种方法确实可以把下划线变短,但是同时也会缩短Tab的点击区域,并且过于短后会影响Tab上TextView的UI显示效果。总之,治标不治本,不是我想要的结果。二、分析源码:通过查询资料以及对TabLayout的源码进行分...原创 2018-08-07 17:32:21 · 7510 阅读 · 0 评论 -
[Android]FlowLayout:流式布局的应用
一、应用流式布局即控件根据ViewGroup的宽,自动的往右添加,如果当前行剩余空间不足,则自动添加到下一行。经常应用于搜索历史以及热搜等界面。二、实现1.FlowLayout.java只要是重写onMeasure和onLayout两个函数。onMeasure主要是对子控件的width和height进行测量 onLayout主要是对子控件进行布局public class ...原创 2018-08-08 11:20:18 · 382 阅读 · 0 评论 -
[Android]SharedPreferences数据存储
应用Android开发中,需要将少量简单类型的数据保存在本地,比如几个字符串,一般选择使用SharedPreferences来保存。SharedPreferences:一个轻量级的存储类,特别适合用于保存软件配置参数。使用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs。可以保存的数据类型有:int、boolean、fl...原创 2018-08-08 11:53:31 · 222 阅读 · 0 评论 -
[Android] SQLite数据库使用
SQLite简介SQLite是一个实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎,并且是一个开源项目。Android上自带SQLite,因此是Android项目上常用的数据库。本文源码:https://github.com/gitEkko/MyApplication.git 一个简单的demo通过SQLiteOpenHelper类实现了SQLite的增删改查操作...原创 2018-12-02 12:57:41 · 445 阅读 · 0 评论 -
[Android]Service和Activity双向通信的两种方式
本文源码:https://github.com/gitEkko/MyApplication.gitService简介Service是android 系统中的四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),它跟 Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互。service可以在很多场...原创 2018-11-26 23:18:31 · 10371 阅读 · 0 评论 -
[Android]Activity生命周期+启动模式
Activity是一个与用户交互的接口。一、Activity生命周期 1.Activity的4种状态 Active Paused Stopped killedActive:当前Activity正处在运行状态,即当前Activity获取了焦点。 Paused:当前Activity正处在暂停状态,即当前Activity失去了焦点。此时Acticity并没有被销毁,内存里...原创 2018-12-01 20:34:42 · 431 阅读 · 0 评论 -
[Android]Service服务
一、什么是ServiceService(服务)--Android四大组件之一。Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。...原创 2018-12-02 01:53:32 · 290 阅读 · 0 评论 -
[Android]ContentProvider内容提供器
本文源码:https://github.com/gitEkko/MyApplication.git一、内容提供者是什么内容提供者(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供者是Android实现跨程序共享数据的标准方式。 原理: Con...原创 2018-12-02 14:16:26 · 253 阅读 · 0 评论 -
[Android]Fragment 初探索|生命周期|懒加载|重叠解决
一、Fragment介绍Fragment是在Android 3.0 (API level 11)开始引入的,它能让你的app在现有基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fragment要多,响应速度Fragment比Activty在中低端手机上快了很多,甚至能达到好几倍,"单Activity + 多Fragment架构"和"多模块Activity + 多F...原创 2018-12-17 18:01:52 · 641 阅读 · 0 评论 -
[Android]Fragment与Activity之间的通信方案
Fragment依赖于Activity,那么它们之间的通信就必须要涉及。通过自己的寻找和实践,知道了Fragment和Activity之间的通信方案大概有5种,各有优缺点,用哪个方案看需求吧。setArguments(Bundle args) Handler Broadcast广播 EventBus 接口回调上代码,开始分析。自己写了个小Demo:Fragment通信Demo ,里边...原创 2018-12-19 21:33:19 · 2289 阅读 · 0 评论 -
[Android]Binder机制的原理
一、概述Android系统中,涉及到很多进程间的通信,底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信,这边依赖于Binder IPC。不仅如此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案。当然,也存在部分其他的IPC方式,如管道、SystemV、Socket等。那么Android为什么不使用...转载 2018-12-26 17:39:00 · 358 阅读 · 0 评论