Android高级篇
zwt7790195
这个作者很懒,什么都没留下…
展开
-
app崩溃抓取
未处理异常定义:没有被try...catch 住的异常(这里说的异常包括Exception和Error)Java层默认未处理异常的Handler,都是调用Thread.setDefaultUncaughtExceptionHandler,注册一个UncaughtExceptionHandler来实现的。可以抓到所有线程的未处理异常 final Thread.UncaughtExcepti转载 2017-03-25 21:06:11 · 602 阅读 · 0 评论 -
Socket和ServerSocket学习笔记
对于即时类应用或者即时类的游戏,HTTP协议很多时候无法满足于我们的需求。这会,Socket对于我们来说就非常实用了。下面是本次学习的笔记。主要分异常类型、交互原理、Socket、ServerSocket、多线程这几个方面阐述。 异常类型在了解Socket的内容之前,先要了解一下涉及到的一些异常类型。以下四种类型都是继承于IOException,所以很多之后直接弹出IOExcept转载 2017-04-12 12:05:56 · 2898 阅读 · 0 评论 -
Window和WindowManager
理解Window和WindowManagerWindow是一个抽象类,它的具体实现是PhoneWindow。WindowManager是外界访问Window的入口,Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。Android中所有的视图都是通过Window来呈现的,不管是Ac转载 2017-04-12 15:14:52 · 336 阅读 · 0 评论 -
最全面的Android Webview详解
前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用用法。目录1. 简介WebView是一个基于webkit引擎、展现web页面的控件。转载 2017-03-26 22:02:05 · 375 阅读 · 0 评论 -
最全面总结 Android WebView与 JS 的交互方式
前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现今天我将全面介绍Android通过WebView与JS交互的全面方式阅读本文前请先阅读:Android开发:最全面、最易懂的Webview详解转载 2017-03-26 22:04:32 · 469 阅读 · 0 评论 -
史上最全解析Android消息推送解决方案
前言消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传、资讯类产品进行新闻推送等等,如下图: 本文将介绍Android中实现消息推送的7种主流解决方案目录1.定义在用户未打开App时,App主动向用户推送服务器最新消息。如下图:消息推送的本质是:App将服务器更新的信息推送给用转载 2017-03-26 22:22:05 · 915 阅读 · 0 评论 -
最全面的Socket使用解析
前言Socket的使用在Android的网络编程中非常重要今天我将带大家全面了解Socket及其使用方法 目录1.网络基础1.1 计算机网络分层计算机网络分为五层:物理层、数据链路层、网络层、运输层、应用层其中:网络层:负责根据IP找到目的地址的主机运输层:通过端口把数据传到目的主机的目的进程,来实现进程与进程之间转载 2017-03-26 22:28:17 · 3891 阅读 · 0 评论 -
插件化
内容待定转载 2017-03-25 21:17:04 · 227 阅读 · 0 评论 -
多dex拆包原理
内容待定转载 2017-03-25 21:15:24 · 370 阅读 · 0 评论 -
为什么 Android 要采用 Binder 作为 IPC 机制?
有网友问到:“Android另起炉灶开发了Binder驱动,而没有采用已有的方案,而D-Bus这样的方案也可以实现Binder的功能,是出于什么原因和什么考虑?安全性?性能?”在开始回答前,先简单概括性地说说Linux现有的所有进程间IPC方式:1. 管道:在创建时分配一个page大小的内存,缓存区大小比较有限;2. 消息队列:信息复制两次,额外的CPU消耗;不转载 2017-03-26 15:18:48 · 401 阅读 · 0 评论 -
Binder设计与实现机制
先Binder是Android系统进程间通信(IPC) 式之 。Binder使Client-Server通信 式。Binder框架定义 四个 :Server,Client,ServiceManager以及Binder驱动。其中Server,Client,ServiceManager运 于 户空间,驱动运 于内核空间。Binder驱动程序提供设备 件/dev/binder与转载 2017-03-25 21:27:48 · 225 阅读 · 0 评论 -
对MVC和MVP的总结
经历过的客户端的架构分为这么几个阶段:第一阶段使用传统的MVC,其中的View,对应的是各种Layout布局文件,但是这些布局文件中并不像Web端那样强大,能做的事情非常有限;Controller对应的是Activity,而Activity中却又具有操作UI的功能,我们在实际的项目中也会有很多UI操作在这一层,也做了很多View中应该做的事情,当然Controller中也包含Con转载 2017-03-25 21:23:22 · 190 阅读 · 0 评论 -
Android内存泄漏研究
概念 根搜索算法 Android 虚拟机的垃圾回收采用的是根搜索算法。GC 会从根节点(GC Roots)开始对 heap 进行遍历。到最后,部分没有直接或者间接引用到 GC Roots 的就是需要回收的垃圾,会被 GC 回收掉。 根搜索算法相比引用计数法很好的解决了循环引用的问题。举个例子,Activity 有 View 的引用,View 也有 Activity 的转载 2017-03-25 17:39:33 · 653 阅读 · 0 评论 -
android进程常驻
Android 进程常驻,顾名思义,就是要让我们的进程在内存中永远存在,换句话说就是进程保活,臭不要脸的说法就是关不了,杀不死,干不掉。这不是耍流氓,是很多场景如果要想为用户服务,就必须有一个进程常驻,以便在特定的时候做特定的事情。比如在Android中,许多BroadcastReceiver事件不支持静态注册,也就是说如果我想接受屏幕开关的系统广播,必须要在进程中动态注册,如果没有一个常驻进程,转载 2017-03-25 17:28:24 · 844 阅读 · 0 评论 -
Android界面性能优化
界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。目录一. Android渲染知识1.1 绘制原理1.2 掉帧1.3 为什么是60Fps?1.4 垃圾回收1.5 UI 线程1.6 垂直同步1.7 UI转载 2017-03-25 20:45:39 · 341 阅读 · 0 评论 -
Android性能优化
合 管 内存节制的使 Service如果应 程序需要使 Service来执 后台任务的话,只有当任务正在执 的时候才应该让Service运 起来。当启动 个Service时,系统会倾向于将这个Service所依赖的进程进 保 ,系统可以在LRUcache当中缓存的进程数 也会减少,导致切换程序的时候耗费 多性能。我们可以使IntentService,当后台任务执 结束后会转载 2017-03-25 20:48:44 · 180 阅读 · 0 评论 -
Android 系统稳定性 - ANR
本章的主要内容如下:ANR简介(什么是ANR、为什么会有ANR、ANR的异常长什么样)如何分析ANR(引起ANR的原因分类、分析ANR的利器)实例讲解避免ANR的最佳实践(从错误中吸取教训)1.1 ANR简介 ANR,是“Application Not Responding”的缩写,即“应用程序无响应”。在A转载 2017-03-25 20:58:03 · 450 阅读 · 0 评论 -
JVM、Dalvik VM和ART虚拟机之间的区别
Android系统使用Dalvik Virtual Machine (DVM)作为其虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例。他们都提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能,各自拥有一套完整的指令系统。Android之所以不直接使用JVM作为其虚拟机的原因有很多,版权问题我们暂且搁置一边,本文将首先在技术上对D转载 2017-03-25 21:14:24 · 311 阅读 · 0 评论 -
Android系统启动流程源码分析
首先我们知道,Android是基于Linux的,当Linux内核加载完成时就会自动启动一个init的进程。又因为我们每当我们启动一个App时,就会生成一个新的dalvik实例,并处于一个新的进程(当然一个App也可能是多进程的)。当我们打开第一个App的时候,就会通过init进程fork出一个zygote进程。之后打开新的App的时候都会fork之前的zygote进程。当fork一转载 2017-03-25 21:19:40 · 209 阅读 · 0 评论 -
从Launcher开始启动App流程源码分析
上图就可以很好的说明App启动的过程ActivityManagerService组织回退栈时以ActivityRecord为基本单位,所有的ActivityRecord放在同 个ArrayList ,可以将mHistory看作 个栈对象,索引0所指的对象位于栈底,索引mHistory.size()-1所指的对象位于栈顶Zygote进程孵化出新的应 进程后,会执 ActivityThre转载 2017-03-25 21:18:30 · 363 阅读 · 0 评论 -
你不知道的 Android WebView 使用漏洞
前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现今天我将全面介绍Android通过WebView与JS交互的全面方式阅读本文前请先阅读:Android开发:最全面、最易懂的Webview详解转载 2017-03-26 22:02:49 · 304 阅读 · 0 评论