Android Boardcast 权限的使用

1. 广播的接收权限

设置广播接收权限的目的在于避免自己应用发送的广播被其他恶意应用接收到。简单来说就是定义谁能接收我的广播,用法如下:

首先发送方的应用在清单文件里自定义一个权限:

1
2
<permission android:name="cn.qiracle.RECEIVER"
android:protectionLevel="signature" />

这里 protectionLevel 选择 signature 或者 signatureOrSystem 更加安全。

读《深入理解Java虚拟机》总结<二.java内存模型与线程>

主内存与工作内存

java内存模型规定了所有变量都存储在主内存中。此处的变量是指实例字段,静态字段和构成数组对象的元素。但不包括局部变量与方法参数。因为后者是线程私有的,不会被共享。除主内存之外,每个线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取,赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程之间也无法之间访问对方工作内存中的变量。线程间变量值得传递均需要通过主内存来完成。

java IO流总结

java IO流简介

java IO流可 分为输入流 和 输出流。这里的输入和输出是相对于程序而言的,外部数据输入到程序中时,我们用输入流,程序中的数据输出到外部时,我们用输出流。

输入流又可分为字节输入流和字符输入流。字节输入流的基类为InputStream,我们常用到它的子类FileInputStream, 字符输入流的基类为Reader,我们常用到它的子类FileReader。

输出流又可分为字节输出流和字符输出流。字节输出流的基类为OutputStream,我们常用到它的子类FileOutputStream, 字符输出流的基类为Writer,我们常用到它的子类FileWriter。

Android 混淆机制

什么是混淆

  按照我的个人理解,混淆就是将代码里的包名,类名,方法名,变量名等用无意义的a,b,c等字母代替。这样做的目的是为了防止他人获取你的apk后可以轻松的反编译并读取你的源码,而加入混淆之后,反编译出的源码是很难被读懂的。详细解释可参考Android混淆是什么

加密算法与HTTPS

原文来自: 也许,这样理解HTTPS更容易

能不能用一句话总结HTTPS?

答案是不能,因为HTTPS本身实在太复杂。但是我还是尝试使用一段话来总结HTTPS:

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

Android 系统 Settings 启动流程详解

Settings简介

  Settings 是 Android 系统自带的一个很重要的应用,给用户提供了操作 Android 系统功能的界面。它里面包含了 Wireless & network,device,personal 以及 system 等几大块的功能设置。在 Android 源码中,该应用位于 packages/apps/Settings 下。该应用的源码是相当复杂的,设计思想很是先进,很难完全讲清楚,笔者也是读了好几遍源码再综合了几篇博客才勉强懂了Settings其启动流程的大体思路。通过博客记录下来以加深理解和印象,同时分享给大家。

|