01 2018 档案

摘要:1)开启minifyEnabled 开启混淆,删除没用的java文件 2)开启shrinkResources 去除无用资源 3)resConfigs “zh” 删除无用的语言资源 4)使用tinypng有损压缩 TinyPNG使用一种智能有损压缩技术(通过降低图片中的颜色数量,来减少存储图片所需要的 阅读全文
posted @ 2018-01-31 17:24 嘉禾世兴 阅读(186) 评论(0) 推荐(0) 编辑
摘要:类型转换错误,使用Gson之类的需要注意 忽略警告 webview中js和本地代码有交互,保持桥梁类不被混淆 保持注解内容,不被混淆 保持反射调用的java类与方法,不要混淆 第三方包不被混淆 常见第三方包 阅读全文
posted @ 2018-01-31 16:56 嘉禾世兴 阅读(138) 评论(0) 推荐(0) 编辑
摘要:原文地址IntentService源码分析 源码可知: 1)实际上是使用了一个 HandlerThread 来维护线程的, 2) HandleThread 中,内部已经维护一个 Looper,这里直接使用 HandlerThread 的 Looper 对象,便于在 IntentService 中去维 阅读全文
posted @ 2018-01-31 16:32 嘉禾世兴 阅读(166) 评论(0) 推荐(0) 编辑
摘要:ContentProvider、ContentResolver、ContentObserver之间的关系 ContentPRrovider: * 四大组件的内容提供者,主要用于对外提供数据 * 实现各个应用程序之间的(跨应用)数据共享,比如联系人应用中就使用了ContentProvider,你在自己 阅读全文
posted @ 2018-01-31 14:00 嘉禾世兴 阅读(1460) 评论(0) 推荐(0) 编辑
摘要:1)Android是基于Linux内核的,因此Linux对文件权限的控制同样适用于Android。在Android中每个应用都有自己的/data/data/包名文件夹,该文件夹只能该应用访问,而其他应用则无权访问 2)Android的权限机制保护了用户的合法权益。如果我们的代码想拨打电话、发送短信、 阅读全文
posted @ 2018-01-31 11:55 嘉禾世兴 阅读(148) 评论(0) 推荐(0) 编辑
摘要:为了应用常驻后台,避免被第三方杀掉的方法 1)Service设置成START-STICKY kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 2)通过startForeground将进程设置为前台进程 3)做前台服务,优先级和前台应用一个级别,除非在系统内存非常缺,否则此进程 阅读全文
posted @ 2018-01-30 17:29 嘉禾世兴 阅读(124) 评论(0) 推荐(0) 编辑
摘要:Picasso、Imageloader、Fresco、Glide的优劣 Fresco: 优点: 1)图片存储在安卓系统的匿名共享内存,而不是虚拟机的堆内存中,图片的中间缓存数据也存放在本地堆内存,所以,应用程序有更多的内存使用,不会因为图片加载而导致oom,同时也减少垃圾回收器频繁调用回收Bitma 阅读全文
posted @ 2018-01-30 16:38 嘉禾世兴 阅读(187) 评论(0) 推荐(0) 编辑
摘要:handler面试必问 解析: Android提供了Handler和Looper来满足线程间的通信。 Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。 1)Looper:一个线程可以产生一个Looper对象,由它来管理此线程里的Me 阅读全文
posted @ 2018-01-30 10:10 嘉禾世兴 阅读(233) 评论(0) 推荐(0) 编辑
摘要:最近一直在读马伟奇老师的简书,给人以不一样的感觉,接下来的时间会做做笔记,毕竟好东西变成自己的才有用 原文地址SharedPreferencesUtils 依赖 调用即可 阅读全文
posted @ 2018-01-30 09:50 嘉禾世兴 阅读(213) 评论(0) 推荐(0) 编辑
摘要:原文地址:https://www.jianshu.com/p/33d499170e25 阅读全文
posted @ 2018-01-29 16:09 嘉禾世兴 阅读(369) 评论(0) 推荐(0) 编辑
摘要:No1: ANR--Application Not Responding,也就是在规定的时间内,没有响应。ANR有三种类型 1)KeyDispatchTimeout(5 seconds)--主要类型按键或触摸事件在特定时间内无响应 2)BroadcastTimeout(10 seconds)--Br 阅读全文
posted @ 2018-01-26 16:39 嘉禾世兴 阅读(332) 评论(0) 推荐(0) 编辑
摘要:原文地址Android面试题-onCreate源码都没看过,怎好意思说自己做android Activity扮演了一个界面展示的角色,堪称四大组件之首,onCreate是Activity的执行入口,都不知道入口到底干了嘛,还学什么android,所以本文会从源码的角度对其进行分析。 熟悉源码的会发现 阅读全文
posted @ 2018-01-25 17:24 嘉禾世兴 阅读(330) 评论(0) 推荐(0) 编辑
摘要:问:线程池的启动策略 线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。 当调用execute()方法添加一个任务时,线程池会做如下判断 1)如果正在运行的线程数量小于corePoolSize,那么马上创建线程运行这个任务 2)当一个线 阅读全文
posted @ 2018-01-25 16:49 嘉禾世兴 阅读(1626) 评论(0) 推荐(0) 编辑
摘要:原文地址腾讯QQ第三方登录的实现原理? Oauth当中的角色: 1.Service Provider(服务提供方): 服务提供方通常是网站,在这些网站当中存储着一些受限制的资源,如照片、视频、联系人列表等。这些网站通常使用用户名和密码来确认用户的身份。比如新浪微博的开放平台就是Service Pro 阅读全文
posted @ 2018-01-25 16:41 嘉禾世兴 阅读(183) 评论(0) 推荐(0) 编辑
摘要:问:为什么service里面startActivity抛异常,activity不会? No1: 启动activity有两种形式: 1)直接调用Context类的startActivity方法;这种方式启动的Activity没有Activity栈,因此不能以standard方式启动,必须加上FLAG_ 阅读全文
posted @ 2018-01-25 16:28 嘉禾世兴 阅读(208) 评论(0) 推荐(0) 编辑
摘要:Toast.matkText才会创建一个新的实例 阅读全文
posted @ 2018-01-25 14:33 嘉禾世兴 阅读(243) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(十四)--JNI和NDK编程 No1: 如果<include>制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那么以<include>指定的id属性为准 No2: 绘制优化 1)onDraw中不要创建新的局部对象 2)onDraw方法中 阅读全文
posted @ 2018-01-25 12:05 嘉禾世兴 阅读(189) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(十三)--综合技术 No1: Java JNI--Java Native Interface(java本地接口),它是为了方便java调用C、C++等本地代码锁封装的一层接口。 No2: NDK是Android所提供的一个工具集合,通过NDK可以在And 阅读全文
posted @ 2018-01-25 11:24 嘉禾世兴 阅读(294) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(十二)--Bitmap的加载和Cache No1: 使用CrashHandler来获取应用的crash信息 No2: 在Android中单个dex文件所能够包含的最大方法数为65536,这包含Android FrameWork、依赖的jar包以及应用本身 阅读全文
posted @ 2018-01-24 14:17 嘉禾世兴 阅读(202) 评论(0) 推荐(0) 编辑
摘要:No1: 插件化技术的好处: 1)减轻应用的内存和CPU占用 2)实现热插拔,即在不发布新版本的情况下更新某些模块 No2: 插件化方案必须要解决三个基础性问题:资源访问、Activity生命周期的管理和ClassLoader的管理 No3: 宿主是指普通的apk,插件一般指经过处理的dex或者ap 阅读全文
posted @ 2018-01-24 14:11 嘉禾世兴 阅读(2173) 评论(0) 推荐(0) 编辑
摘要:源码地址https://github.com/king1039/android-art-res/tree/master/Chapter_13/CrashTest/src/com/ryg/crashtest 使用 测试 阅读全文
posted @ 2018-01-24 10:50 嘉禾世兴 阅读(344) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(十一)--Android的线程和线程池 No1: 目前比较常用的缓存策略是LruCache和DiskLruCache,LruCache常被用作内存缓存,DiskLruCache常被用作存储设备缓存。 Lru是Least Recently Used的缩写, 阅读全文
posted @ 2018-01-23 15:37 嘉禾世兴 阅读(196) 评论(0) 推荐(0) 编辑
摘要:原文地址https://github.com/singwhatiwanna/android-art-res/tree/master/Chapter_12/src/com/ryg/chapter_12/loader 阅读全文
posted @ 2018-01-23 15:18 嘉禾世兴 阅读(287) 评论(0) 推荐(0) 编辑
摘要:需求:WebView中的图片点击后放大全屏查看 通过重写js来实现 阅读全文
posted @ 2018-01-23 09:27 嘉禾世兴 阅读(316) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(十)--Android的消息机制 No1: 在Android中可以扮演线程角色的有很多,比如AsyncTask、IntentService、HandlerThread。 AsyncTask底层封装了线程池和Handler,主要是为了方便开发者在子线程中更 阅读全文
posted @ 2018-01-22 17:23 嘉禾世兴 阅读(211) 评论(0) 推荐(0) 编辑
摘要:构造方法 参数意义: coreProolSize:线程池核心线程数 maximumPoolSize:线程池所能容纳的最大线程数 keepAliveTime:非核心线程闲置时的超时时长,超过这个时长,非核心线程就会被回收。当ThreadPoolExecutor的allowCoreThreadTimeO 阅读全文
posted @ 2018-01-22 16:36 嘉禾世兴 阅读(420) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(九)--四大组件 No1: 消息队列MessageQueue的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表,因为单链表在插入和删除上比较有优势 No2: ThreadLocal可以在不同的线程中互不干扰地存储并提供数据,通过Thr 阅读全文
posted @ 2018-01-22 11:55 嘉禾世兴 阅读(281) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(八)--WindowManager No1: 四大组件除了BroadcastReceiver,其他三种组件都必须在AndroidManifest中注册。 在调用方式上,除了ContentProvider,其他三种组件都需要借助Intent。 No2: A 阅读全文
posted @ 2018-01-19 16:42 嘉禾世兴 阅读(184) 评论(0) 推荐(0) 编辑
摘要:ContentProvider启动过程(通过query方法触发) ContentProvider.acquireProvider--> ApplicationContentResolver.acquireProvider--> ActivityThread.acquireProvider--> Ac 阅读全文
posted @ 2018-01-19 16:41 嘉禾世兴 阅读(240) 评论(0) 推荐(0) 编辑
摘要:动态注册过程: ContextWrapper.registerReceiver--> ContextImpl.registerReceiver--> ContextImpl.registerReceiverInternal--> ActivityManagerNative.getDefault(). 阅读全文
posted @ 2018-01-19 15:54 嘉禾世兴 阅读(164) 评论(0) 推荐(0) 编辑
摘要:重写webview内的方法 原文地址Android webView拦截url 阅读全文
posted @ 2018-01-19 14:37 嘉禾世兴 阅读(849) 评论(0) 推荐(0) 编辑
摘要:需求: 1.页面上悬浮一个搜索框,点击可伸缩 2.可以搜索上一个下一个 3.搜索标题内容 效果图: 注意点: 1.起始一个搜索小图片,终止一长条搜索框,中间用View做一个动画,这三个都是CardView 2.为了处处使用,封装了起来 3.搜索到的内容放进一个list,保存位置,点击上一个下一个滑动 阅读全文
posted @ 2018-01-19 13:58 嘉禾世兴 阅读(664) 评论(0) 推荐(0) 编辑
摘要:Service两种工作状态的作用 1)启动状态:用于执行后台计算 2)绑定状态:用于其他组件和Service的交互 注意:Service这两种状态可以共存,即Service既可以处于启动状态也可以同时处于绑定状态 Service启动过程 ContextWrapper.startService--> 阅读全文
posted @ 2018-01-16 17:39 嘉禾世兴 阅读(179) 评论(0) 推荐(0) 编辑
摘要:Activity工作过程: Activity.startActivity--> Activity.startActivityForResult--> Instrumentation.execStartActivity--> ActivityManagerNative.getDefault().sta 阅读全文
posted @ 2018-01-16 15:32 嘉禾世兴 阅读(167) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(七)--动画 No1: Window是一个抽象类,它的具体实现是PhoneWindow。创建一个Window是很简单的事,只需要通过WindowManager即可完成。 WindowManager是外界访问Window的入口,Window的具体实现位于W 阅读全文
posted @ 2018-01-15 16:58 嘉禾世兴 阅读(196) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(六)--Drawable No1: 自定义动画:派生一种新动画只需要继承Animation这个抽象类,然后重写它的initialize和applyTransformation方法,在initialize方法中做一些初始化工作,在applyTransfor 阅读全文
posted @ 2018-01-12 15:10 嘉禾世兴 阅读(173) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(五)--RemoteViews 【BitmapDrawable】 简单的图片 【NinePatchDrawable】 .9图 【ShapeDrawable】 通过颜色来构造的图形,即<shape>标签,百度一搜一堆,这里就不写了 【LayerDrawab 阅读全文
posted @ 2018-01-11 16:16 嘉禾世兴 阅读(240) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(四)--View工作原理 No1: RemoteViews使用场景:通知栏和桌面小部件 No2: 通知栏主要通过NotificationManager的notify方法来实现的 桌面小部件是通过AppWidgetProvider来实现的,AppWidge 阅读全文
posted @ 2018-01-11 12:05 嘉禾世兴 阅读(242) 评论(0) 推荐(0) 编辑
摘要:PendingIntent表示一种即将发生的意图,和Intent的区别在于:PendingIntent是在将来的某个不确定的时刻发生,而Intent是立刻发生 典型使用场景是给RemoteViews添加单击事件,想要给RemoteViews设置单击事件,就必须使用PendingIntent 第二个参 阅读全文
posted @ 2018-01-10 15:02 嘉禾世兴 阅读(338) 评论(0) 推荐(0) 编辑
摘要:AppWidgetProvider是android提供实现桌面小部件的类,本质是一个广播,即BroadcastReceiver。是继承关系 开发步骤: 1.在res/layout/下新建一个XML文件,命令为widget.xml,名称和内容可以自定义 2.在res/xml/下新建appwidget_ 阅读全文
posted @ 2018-01-10 14:42 嘉禾世兴 阅读(407) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(三) No1: View的三大流程:测量流程、布局流程、绘制流程 No2: ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。 在Activ 阅读全文
posted @ 2018-01-10 10:04 嘉禾世兴 阅读(227) 评论(0) 推荐(0) 编辑
摘要:接上篇《android开发艺术探索》读书笔记(二) No1: 通过MotionEvent对象可以得到点击事件发生的x和y坐标,getX/getY返回的是相对于当前View左上角的x和y坐标,而getRawX/getRawY返回的是相对于手机屏幕左上角的x和y坐标。 No2: TouchSlop是系统 阅读全文
posted @ 2018-01-08 15:54 嘉禾世兴 阅读(558) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示