
android
文章平均质量分 73
唯夜
这个作者很懒,什么都没留下…
展开
-
高级Android开发面试汇总
高级 Android 开发面试题汇总一、 Android 基础1. Service 的两种启动方式简单的来说就是 直接启动 和 绑定启动 两种方式。// 直接启动Context.startService()// 直接启动后需要手动调用停止服务才会停止Context.stopService()Service.selfStop()// 绑定启动Context.bindServi...原创 2019-02-28 13:50:54 · 3765 阅读 · 1 评论 -
极光推送收不到推送消息
极光推送收不到推送消息问题解决猜测为什么会出现问题问题sdk版本号:// 极光推送compile 'cn.jiguang.sdk:jpush:3.1.6' // 此处以JPush 3.1.6 版本为例。compile 'cn.jiguang.sdk:jcore:1.2.5' // 此处以JCore 1.2.5 版本为例。新版的极光推送 gradle 自动配置可能是sdk自身有bu...原创 2018-10-09 16:22:51 · 8892 阅读 · 0 评论 -
Glide 框架解析
Glide 框架解析Glide 是我们常用的图片加载库,使用了很多图片管理的技术,以及常用的两级缓存,这篇文章重点是给他家解析一下Glide的框架设计,重点不在各种技术的詳細要点。学习优秀开源项目的框架有助于我们优化自己的代码结构,写出更加优美的代码,同时开拓自己的眼界,在技术的路上越走越远。概览首先看一张 Glide 类的概览图,只写了重点结构的关键类,为了让大家对Glide有个...原创 2018-09-05 17:48:35 · 610 阅读 · 0 评论 -
Android性能优化典范笔记(1)-GPU绘制性能优化
Android性能优化典范笔记(1)-GPU绘制性能优化I. Render Performance渲染优化,通常情况下我们看到的显示屏的刷新率都是60Hz,也就是通常说的60帧,反过来计算,每一帧的绘制间隔是1000/60=16.67ms/f, 也就是所16.67ms是每一帧的理想刷新时间,但是60Hz是一个理想值,人眼能够识别的最低帧率为24帧,低于这个帧数就会明显感到卡顿,通常情...原创 2018-06-13 13:46:23 · 2942 阅读 · 0 评论 -
Retrofit原理分析
Retrofit原理分析温故而知新还记得retrofit的使用方法嘛,下面我们来回顾一下接口定义public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user);}...原创 2018-06-08 15:10:40 · 547 阅读 · 0 评论 -
Java通过泛型的模板类型实例化对象
通过泛型的模板类型实例化对象最近自己研究了下mvvm框架,使用泛型的方式可节省很多代码,并且可以合并很多冗余代码,为了最大化的精简代码想到了通过泛型的type用反射的方式实例化对象,这样对象的实例化代码就不用每次都去复写函数来创建了,下面来看看代码。public class BaseViewModel&lt;M extends Model&gt; implements ViewMode...原创 2018-06-08 14:14:02 · 10848 阅读 · 1 评论 -
Glide DiskCache 原理分析
Glide DiskCache 原理分析1.感性认识DiskCacheDiskCache默认设置:a.内部存储位置 内部存储位置: /data/{package}/cache/image_manager_disk_cache/public interface DiskCache { /** * An interface for lazily creating a disk cache.原创 2018-04-26 18:04:34 · 2561 阅读 · 0 评论 -
RecyclerView上拉加载Demo
RecyclerView Load More Demo日常开发中使用RecyclerView时会经常用到上拉加载的功能,但是RecyclerView本身又没有提供便捷的使用方法,只提供了一个统一的下拉加载功能。这里我们演示一下如何为RecyclerView添加上拉加载功能。完整demo你可以再github上看到: https://github.com/onlynight/Recycler...原创 2017-11-29 17:31:17 · 394 阅读 · 0 评论 -
常用ADB命令行
常用ADB命令行adb devices查看链接的设备adb shell进入设备根目录adb pull从设备上拉文件下来adb pull [source] [dest]eg.adb pull /mnt/sdcard/temp.mp4 temp.mp4adb push将文件推到设备中adb push [source] [dest]eg.adb push temp.mp4 /mnt原创 2017-11-20 15:11:58 · 310 阅读 · 0 评论 -
android自定义WaveView水波纹控件
WaveViewGithub Repository and libarayhttps://github.com/onlynight/WaveView首先看下演示demodemo中可以看到不同高度,不同速度,不同幅度的水波纹;你可以通过view的参数直接控制view的表现形式。引入你的工程在项目的根目录下的build.gradle文件中添加如下代码:allprojects { reposi原创 2017-09-14 10:44:07 · 3694 阅读 · 2 评论 -
android 多线程下载,断点续传,线程池
android 多线程下载,断点续传,线程池你可以在这里看到这个demo的源码: https://github.com/onlynight/MultiThreadDownloader效果图这张效果图是同时开启三个下载任务,限制下载线程数量的效果图。多线程下载原理多线程下载的原理就是将下载任务分割成一个个小片段再将每个小片段分配给各个线程进行下载。 例如一个文件大小为100M,我们决定使用4个线程原创 2017-02-13 16:21:10 · 4345 阅读 · 1 评论 -
Android滑动冲突解决方法
Android滑动冲突解决方法滑动冲突首先讲解一下什么是滑动冲突。当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够滑动,而ListView或RecyclerView不能滑动,这个就违背了我们写这段代码的意愿。我们想要的结果是当我们滑动ListView的时候ListView滑动,滑动ListView以外的地方的时候Scr原创 2016-12-26 17:50:08 · 3562 阅读 · 1 评论 -
从自定义TagLayout看自定义布局的一般步骤[手动加精]
从自定义TagLayout看自定义布局的一般步骤[手动加精]我们常用的布局有LinearLayout,FrameLayout,RelativeLayout,大多数情况下都能满足我们的需求,但是也有很多情况下这些布局不能满足我们的需求,无论我们怎么嵌套布局都没法实现我们想要的效果,这时候我们就需要用到自定义布局啦。如果你正准备学习自定义布局,或者你想彻底了解自定义布局的一般步骤,那么这篇文章一定很适合原创 2016-11-23 11:47:49 · 3353 阅读 · 0 评论 -
com.android.builder.packaging.DuplicateFileException
你打包的时候是不是遇到过这种情况:Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileExce原创 2016-11-16 15:12:56 · 4125 阅读 · 1 评论 -
Android自定义水波纹动画Layout
Android自定义水波纹动画Layout源码是双11的时候就写好了,但是我觉得当天发不太好,所以推迟了几天,没想到过了双11女友就变成了前女友,桑心。唉不说了,来看看代码吧。展示效果Hi前辈话不多说,我们先来看看效果:这一张是《Hi前辈》的搜索预览图,你可以在这里下载这个APP查看更多效果:http://www.wandoujia.com/apps/com.superlity.hiqianbeiL原创 2016-11-15 21:19:00 · 6115 阅读 · 17 评论 -
Android创建自己的gradle依赖包
最近想把自己做过的一些东西分享给大家,请叫我高产小能手。Android创建自己的gradle依赖包相信在用Android Studio的同学对gradle都不陌生吧:dependencies { compile 'com.github.onlynight:RulerSurfaceView:0.0.1'}通过这样的代码引入外部依赖是在正常不过的了,但是我们都是用的别人制作好的库,有没原创 2016-11-07 16:01:39 · 5081 阅读 · 2 评论 -
Android自定义RulerView
自定义RulerView你可以在Github上看到这篇文章以及源码:https://github.com/onlynight/RulerView 如果你想直接使用请看这里的使用方法:https://github.com/onlynight/RulerSurfaceView只需简单几步gradle配置即可使用。概述本文主要讲如何继承View实现一个自定义View,然后通过实例RulerView的实现原创 2016-11-01 17:35:37 · 4969 阅读 · 3 评论 -
Android string.xml多语言翻译工具
Android string.xml 翻译工具源码你可以在Github上看到:https://github.com/onlynight/Translator概述最近要把公司的app往国外推广,无奈只做了中文版,好在所有的字符串都是写在string.xml文件中的,为了快速推出海外版本,决定有机器翻译先做一个简单的版本。说到这里问题就来啦,这么多文本难道一句一句的复制粘贴呀,当然写个小工具翻译既省时又原创 2016-10-31 19:07:48 · 11460 阅读 · 0 评论 -
Activity启动过程剖析
Activity启动过程剖析写在前面在看这篇文章之前你需要了解android的IPC通信机制里面的ADIL的原理,还有一些常用的设计模式比如代理模式你也需要有所了解,了解这些会让你更容易理解android源码。阅读本文的读者我都默认你是了解这些东西的,如果你正好还没没有看过这些东西,那么我想你推荐我的另外几篇文章,希望能让你快速了解android的IPC的AIDL的设计原理:AIDL使用及原理分析原创 2016-10-24 19:54:43 · 793 阅读 · 0 评论 -
Android中设置组件多进程
MultiProcessComponent源码地址github源码下载地址https://github.com/onlynight/MultiProcessComponent概述这个demo中将会向你展示如果将不同的组件分配到不同的进程中。这里我们只演示android原生提供的多进程方式,通过jni fork的进程我们不做演示。android原生为我们提供的多进程方式只有一种就是在Androi原创 2016-10-13 15:28:08 · 1318 阅读 · 0 评论 -
AIDL使用以及原理分析
AIDL使用以及IPC原理分析(进程间通信)概要为了大家能够更好的理解android的进程间通信原理,以下将会从以下几个方面讲解跨进程通讯信:1. 必要了解的概念2. 为什么要使用aidl进程间通信3. 可能遇到的问题以及解决办法4. aidl的使用,通过android提供的aidl实现一个进程间通信5. 不使用aidl,手动编写Binder实现进程间通信6. 分析aidl的原理,梳理a原创 2016-10-12 19:55:51 · 11940 阅读 · 1 评论 -
android源码阅读笔记1-配置源码路径/阅读源码方法讨论
开始之前android studio中配置android源码路径 android studio中有源码的路径,你只需要打开SDK Manager下载源码然后重启android studio即可查看源码。 方法: 在android studio中打开设置(File->Settings或者 ctrl+alt+s) 打开SDK Manager选择你要查看的源码的版本(注意需要根据你工程中使用的SD原创 2016-09-29 19:36:04 · 871 阅读 · 0 评论 -
windows 下配置 react native 开发环境
windows 下配置 react native 开发环境安装nvm由于react native 需要使用 NodeJs 4.0以上版本,为了方便切换NodeJs,首先我们需要安装nvm。 你可以在这里查看nvm的安装教程: https://github.com/creationix/nvm#installation 同时windows下的nvm在github上也有开源代码,你可以在这里找到原创 2016-05-04 17:12:51 · 1007 阅读 · 0 评论 -
android中实现返回首页功能
关于返回首页功能的两种实现最近需要实现一个返回首页的功能,刚开始自己的基本思路就是清除当前站内的所有activity但不包括MainActivity,这种方法也不难,优快云上一搜就找到了答案。还有一种方案需要大神的提点才想到的。原创 2016-03-23 17:00:36 · 14106 阅读 · 3 评论 -
MIUI应用权限设置
随着miui越来越封闭,小米对非自由渠道的应用限制越来越苛刻,我们公司的产品一半以上的用户都是来自小米,而且像我们这样的靠短信支付维持收入的游戏,短信权限默认禁止真是要了我们的命。被加入miui黑名单的游戏默认重要的权限都是禁止状态,譬如发送短信权限默认设置为禁止就直接断了我们收入来源。因此花了几个小时在网上搜索相关资料,我们不能帮助用户打开应用的权限至少我们能够引导用户去打开应用权限,并且将引导尽可能做的很简单。原创 2015-07-25 17:11:23 · 11511 阅读 · 7 评论 -
横竖屏切换时候Activity的生命周期
曾经遇到过一个面试题,让你写出横屏切换竖屏Activity的生命周期。现在给大家分析一下他切换时具体的生命周期是怎么样的:1、新建一个Activity,并把各个生命周期打印出来2、运行Activity,得到如下信息 onCreate–> onStart–> onResume–>3、按crtl+f12切换成横屏时 onSaveInstanceState–> onPause–> onStop–转载 2015-04-27 13:45:42 · 644 阅读 · 0 评论 -
android横竖屏切换生命周期
前段时间在做项目的时候发现一个很奇怪的现象,在应用中按下锁屏键后再解锁,发现应用自动结束了。一开始以为是占用内存太多系统结束了应用,后来感觉这个很影响用户体验,决定自己查一下这个问题的根源。仔细阅读代码后发现,确实是应用内有一处代码使得应用在锁屏后自动结束了。该处代码是在onCreate中通过keyguardmanager判断设备是不是处于锁屏状态,如果是锁屏状态则结束应用。打印日志后发现,每次解锁原创 2015-04-27 13:31:28 · 744 阅读 · 0 评论 -
Android判断应用是否拥有某种权限
Android 判断应用是否拥有某种权限最近发现很多很多分原生Android系统会修改某些权限,甚至还有可能在安装过程中从APP的包中可能删除某些权限,导致APP无法正常运行。所以我们在使用某些特殊权限时,需要判断当前应用是否具有该权限,废话不多说了上代码。public static boolean hasExternalStoragePermission(Context contex原创 2015-04-26 23:57:34 · 7133 阅读 · 1 评论