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