11 androidZhen

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 14w+

Android7.0之后 FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

Android7.0之后 FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题工程结构里依赖了一个moudle,因此项目里除了app主模块,还有一个library.直接替换包名就好了,将library中的FileProvider.getUriForFile(this, “com.app.app.fileprovide...

2019-06-14 16:15:03

Dalvik和ART运行时环境的区别

在此,我并没有打算深入的学习Dalvik和ART两种方式的实现原理,只是想知道他俩的区别。之前,也是零零散散的看过,并没有总结成文字。在此,总结下。DalvikDalvik虚拟机,是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即“Dalvik Executable”)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格

2017-12-22 15:58:12

Android 你应该知道的的应用冷启动过程分析和优化方案

你有没有发现,点击安卓手机桌面上的App图标时,有时候应用马上进入主界面,有时候要经历好几秒甚至更久的白屏(也可能是黑屏)时间才能进入主界面呢?这其实是安卓应用常见的冷热启动问题。本文就和大家一起聊聊冷热启动方式和启动页的体验优化方案。启动方式安卓应用的启动方式分为三种:冷启动、暖启动、热启动,不同的启动方式决定了应用UI对用户可见所需要花费的时间长短。顾名思义,冷启动消耗的时间最长。基于冷启动方式

2017-12-22 15:07:12

Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

要完全彻底理解这个问题,需要准备以下4方面的知识:Process/ThreadAndroid Binder IPC,Handler/Looper/MessageQueue消息机制,Linux pipe/epoll机制。总结一下主要有3个疑惑的地方:Android中为什么主线程不会因为Looper.loop()里的死循环卡死?没看见哪里有相关代码为这个死循环准备了一个新线程去运转?Ac

2017-12-13 16:45:32

csdn java创建线程的三种方式及其对比

Java中创建线程主要有三种方式:继承Thread类创建线程类 通过Runnable接口创建线程类 通过Callable和Future创建线程一、继承Thread类创建线程类定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来

2017-12-07 14:29:51

一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)

本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。原地址链接:http://www.jianshu.com/p/a72c5ccbd150一、流程概述启动流程:①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;②system_server进程接

2017-10-12 19:49:48

Java并发编程:volatile关键字解析

原文链接volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先

2017-04-26 17:04:37

热修复实现:ClassLoader 方式的实现

在之前的文章 热修复入门:Android 中的 ClassLoader中,讲解了 Android 中的 ClassLoader 工作原理和通过 ClassLoader 实现热修复的可能性。本文结合 Nuva 项目,来讲讲基于 ClassLoader 方式如何具体实现热修复,阅读本文之前建议先通过前面提到的文章了解下 Android 的 ClassLoader。实现的几个关键点在讲解实现思路之前,先

2017-04-06 16:41:23

热修复入门:Android 中的 ClassLoader

从去年下半年开始,热修复技术在 Android 技术社区热了一阵子,这种不用发布新版本就可以修复线上 bug 的技术确实有很大的需求,最近正好在研究一些开源的热修复方案,本文就其中常用的 ClassLoader 方式实现的热修复方案中的 ClassLoader 机制作一个简单的介绍。ClassLoader 简介对于 Java 程序来说,编写程序就是编写类,运行程序也就是运行类(编译得到的 class

2017-04-05 17:54:29

View的生命周期方法和Activity生命周期方法关系

View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序。 见如下图(1) 在Activity onCreate方法中初始化了View , 调用了View 的onFinishInflate (2) 在执行完 Activity的 onPostResume方法之后(第一次onResume之后)才真正开始了V

2017-03-31 16:21:14

如何判断应用被强杀以及解决出现的空指针问题

原文链接判断应用被强杀在Application中定义一个静态变量,给一个初始值,然后在闪屏页面为这个变量重新赋值,接下来闪屏页面会跳转到主页面,我们在主页面对这个值进行判断,如果变量的值是初始值,则说明应用被强杀了,接下来看看相关代码public class MyApp extends Application { public static int CODE = -1; publi

2017-03-26 15:47:19

Handler.postDelayed(new Runnable)是否运行在主线程

知识点 postDelayed(new Runnable())是否运行在主线程中? 答案 是的。 这个 new Runnable() 依附于创建Handler的线程, 代码如下 在绝对的UI线程中打印线程ID:System.out.println("UI Thread = " + Thread.currentThread().getId()); 下面在posdelayed中打印运行线程的

2017-03-26 13:20:49

Android安全加密:消息摘要Message Digest

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Message DigestAndroid安全加密:数字签名和数字证书Android安全加密:Https编程1. 常见算法MD5、SHA、CRC 等2. 使用场景对用户密码进行md5 加密后保存到数据库里软件下载站使用消息摘要计算文件指纹,防止被篡改数

2017-03-24 15:14:53

Android安全加密:非对称加密

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密 Android安全加密:消息摘要Message Digest Android安全加密:数字签名和数字证书 Android安全加密:Https编程1. 介绍与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥

2017-03-24 13:57:16

Android安全加密:对称加密

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Message DigestAndroid安全加密:数字签名和数字证书Android安全加密:Https编程一、凯撒密码1.概述凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文

2017-03-24 11:34:08

Android App整体架构设计的思考

本文是对我在知乎一个回答的整理,其中的内容大多是对我平时的阅读和实践的总结,希望对Android的开发者有所帮助。但毕竟是个人的一些思考,难免有疏漏,也欢迎对本文的内容提出建议。1. 架构设计的目的对程序进行架构设计的原因,归根到底是为了提高生产力。通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更

2017-03-23 13:25:06

Android Volley完全解析(四),带你从源码的角度理解Volley

Volley的官方文档中本身就附有了一张Volley的工作流程图,如下图所示。多数朋友突然看到一张这样的图,应该会和我一样,感觉一头雾水吧?没错,目前我们对Volley背后的工作原理还没有一个概念性的理解,直接就来看这张图自然会有些吃力。不过没关系,下面我们就去分析一下Volley的源码,之后再重新来看这张图就会好理解多了。说起分析源码,那么应该从哪儿开始看起呢?这就要回顾一下Volley的用法了,

2017-03-21 14:20:22

序列化Serializable和Parcelable的理解和区别

一、android为什么要序列化?什么是序列化,怎么进行序列化why为什么要了解序列化?—— 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。what什么是序列化 —— 序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。how怎么

2017-03-17 11:00:55

如何将一个Java对象写到文件里

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;class Stude

2017-03-16 14:31:02

自定义Adapter中实现startActivityForResult的分析

最近几天在做文件上传的时候,想在自定义Adapter中启动activity时也返回Intent数据,于是想到了用startActivityForResult,可是用mContext怎么也调不出这个方法,只能调用startActivity这个方法,于是在网上搜一下,可以利用一个方式可以间接的解决这个问题,果断贴代码:Intent mIntent = new Intent(mContext,clazz)

2017-03-16 11:11:47

查看更多

勋章 我的勋章
    暂无奖章