
Android开发
文章平均质量分 74
sky1203850702
所有的好走的路都是下坡
展开
-
Android permission权限详解
权限是一种安全机制。Android权限主要用于限制应用程序内部某些具有限制性特性的功能使用以及应用程序之间的组件访问。在Android开发中,基本上都会遇到联网的需求,我们知道都需要加上联网所需要的权限:<uses-permission android:name="android.permission.INTERNET" />实际上,在开发过程中,当我们使用了某...转载 2020-04-16 16:22:59 · 2113 阅读 · 0 评论 -
android:sharedUserId问题解析
本文转自:http://blog.youkuaiyun.com/cigogo/article/details/7483676Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户Shared User id通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是转载 2015-07-08 10:13:23 · 2514 阅读 · 0 评论 -
snprintf()函数使用方法
众所周知,sprintf不能检查目标字符串的长度,可能造成众多安全问题,所以都会推荐使用snprintf.自从snprintf代替了sprintf,相信大家对snprintf的使用都不会少,函数定义如下:int snprintf(char*str, size_t size,constchar*format, ...);函数说明:最多从源串中拷转载 2016-10-10 16:18:53 · 72197 阅读 · 2 评论 -
C语言opendir()函数:打开目录函数
相关函数:open, readdir, closedir, rewinddir, seekdir, telldir, scandir头文件:#include #include 定义函数:DIR * opendir(const char * name);函数说明:opendir()用来打开参数name 指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接转载 2016-10-10 16:22:29 · 20434 阅读 · 0 评论 -
Android反射机制实现与原理
本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识:一、反射的概念及在Java中的类反射 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的转载 2016-09-30 11:18:23 · 596 阅读 · 0 评论 -
Android Fingerprint -- Enroll流程
Enroll流程主要的工作是在hal层以下完成的。对于应用层和framwork层的流程就不做详细分析了。一、preEnroll点击设置中的添加指纹,setting就会调到fingerprintd的preEnroll接口。preEnroll会在指纹TA中生成并保存一个64位的随机数。这个随机数有两个用途:返回给上层,用于填充enroll中的authenticated to转载 2016-10-18 15:01:01 · 7542 阅读 · 2 评论 -
java动态代理机制
动态代理其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定的classloader将 class byte加载进系统,最后生成这样一个类的对象,并初始化该对象的一些值,如invocationHandler,以即所有的接口对应的Method转载 2016-10-08 15:57:57 · 384 阅读 · 0 评论 -
Android 密钥库系统
利用 Android 密钥库系统,您可以在容器中存储加密密钥,从而提高从设备中提取密钥的难度。在密钥进入密钥库后,可以将它们用于加密操作,而密钥材料仍不可导出。此外,它提供了密钥使用的时间和方式限制措施,例如要求进行用户身份验证才能使用密钥,或者限制为只能在某些加密模式中使用。如需了解详细信息,请参阅安全功能部分。密钥库系统由 KeyChain API 以及在 Android 4.3(API转载 2016-12-02 15:14:12 · 5860 阅读 · 1 评论 -
Android Fingerprint -- HAL层的初始化工作
转自: http://www.cnblogs.com/happy-leon/p/5655614.html http://blog.youkuaiyun.com/liuxd3000/article/details/42424179序文:如何调用Hal层库文件每个Hal层库文件有一个入口,即HAL_MODULE_INFO_SYM,上层在调用hal层库文件时会在/system/lib/hw/下面转载 2016-12-16 16:13:27 · 8069 阅读 · 0 评论 -
C语言之尾队列tailq
转载链接: http://blog.youkuaiyun.com/gujing001/article/details/18667485queue和list的结构定义和操作都在'sys/queue.h'中完成, 主要定义了下面四种数据结构:单向列表(single-linked lists)单向尾队列(single-linked tail queue)列表(lists)尾队列(tail转载 2016-12-19 15:25:00 · 2100 阅读 · 0 评论 -
C语言fread()函数:读文件函数(从文件流读取数据)
相关函数:fopen, fwrite, fseek, fscanf头文件:#include 定义函数:size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);函数说明:fread()用来从文件流中读取数据. 参数stream 为已打开的文件指针, 参数ptr 指向欲存放读取进来的数据空间,转载 2016-10-10 15:43:37 · 17501 阅读 · 0 评论 -
C语言fclose()函数:关闭文件流
头文件:#include fclose()函数用来关闭当前文件流,其原型为: int fclose(FILE * stream);【参数】stream为文件流指针。【返回值】若关文件动作成功则返回0,有错误发生时则返回EOF,并把错误代码存到errno。fclose()用来关闭fopen()打开的文件,此动作会让缓冲区内的数据写入文件中,并释放系统所提供的转载 2016-10-10 15:34:18 · 16299 阅读 · 1 评论 -
不只是给面试加分 -- Java WeakReference的理解与使用
前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, 20多个拥有5年以上java开发经验的面试者中, 只有两人知道weak reference的存在,转载 2015-07-02 13:15:29 · 720 阅读 · 0 评论 -
创建.gitignore文件对文件进行过滤
创建 .gitignore 随意设置想跟踪哪些文件 和不跟踪哪些文件. 1.在项目根目录下建立 .gitignore 文件2. .gitignore文件过滤有两种模式,开放模式和保守模式2.1开放模式负责设置过滤哪些文件和文件夹eg:过滤文件夹设置:/mtk/过滤文件设置指定过滤某种类型的文件:*.zip*.rar*.转载 2015-07-10 15:56:26 · 723 阅读 · 0 评论 -
如何变下Android.mk文件一
一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。NDK编译系统将会为你自动处理这些问题。这也意味着,转载 2015-07-07 16:22:28 · 610 阅读 · 0 评论 -
android源码使用proguard混淆编译及错误总结
本文转自:http://blog.sina.com.cn/s/blog_5f1ebb8f0101lkqz.html关于混淆编译也主要是从网上学习的,决定对网上的进行总结,供大家一起学习,研究,东西主要都是网友们写的,我这里借鉴了,文章最后是网友的原文地址;1,什么是混淆编译ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除转载 2015-07-07 19:33:44 · 817 阅读 · 0 评论 -
如何编写Android.ml文件详解
(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下 Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式: LOCAL_PATH:=$(call my-dir) 上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。 (2)Android.mk中转载 2015-07-07 17:09:35 · 1442 阅读 · 0 评论 -
android IPC通信中的UID和PID识别
IPCThreadState对象维护了2个变量 pid_t mCallingPid; uid_t mCallingUid; 从变量名称来看,这2个变量保存了进程的PID和UID,并且由于这两个变量由IPCThreadState对象维护,可见它们是与IPC相关的。具体它们转载 2016-09-12 09:39:53 · 605 阅读 · 0 评论 -
alpha版、beta版、rc版的意思
很多软件在正式发布前都会发布一些预览版或者测试版,一般都叫“beta版”或者 “rc版”,特别是开源软件,甚至有“alpha版”,下面来解释一下各个版本的意思。alpha版:内部测试版。α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本包含很多BUG,功能也不全,主要是给开发人员和 测试人员测试和找BUG用的。beta版:公开测试版。β是希腊字母的第二个,顾名转载 2016-10-09 10:27:58 · 449 阅读 · 0 评论 -
C语言remove()函数:删除文件或目录
头文件:#include remove()函数用于删除指定的文件,其原型如下: int remove(char * filename);【参数】filename为要删除的文件名,可以为一目录。如果参数filename 为一文件,则调用unlink()处理;若参数filename 为一目录,则调用rmdir()来处理。【返回值】成功则返回0,失败则返回-1,错误原因转载 2016-10-10 15:25:46 · 23397 阅读 · 0 评论 -
C语言的fopen函数(文件操作/读写)
头文件:#include fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, const char * mode);【参数】path为包含了路径的文件名,mode为文件打开方式。mode有以下几种方式:打开方式说明r以只读方式打开文转载 2016-10-10 15:32:25 · 30634 阅读 · 0 评论 -
Android应用程序activity启动流程简介
无论是通过点击应用程序图标来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都要借助于应用程序框架层的ActivityManagerService服务进程。Service也是由ActivityManagerService进程来启动的。在Android应用程序框架层中,ActivityManagerService是一个非常重要的接口,它原创 2017-08-05 17:14:49 · 578 阅读 · 0 评论 -
Android之内存管理及优化
转自 https://www.kotlintc.com/articles/2311?fr=sidebar一、Android内存基础物理内存与进程内存物理内存即移动设备上的RAM,当启动一个Android程序时,会启动一个Dalvik VM进程,系统会给它分配固定的内存空间(16M,32M不定),这块内存空间会映射到RAM上某个区域。然后这个Android程序就会运转载 2018-01-05 17:18:38 · 2279 阅读 · 0 评论 -
android 共享内存(ShareMemory)的实现
转自:https://www.jianshu.com/p/ed87b12dfe0dAndroid 几种进程通信方式跨进程通信要求把方法调用及其数据分解至操作系统可以识别的程度,并将其从本地进程和地址空间传输至远程进程和地址空间,然后在远程进程中重新组装并执行该调用。然后,返回值将沿相反方向传输回来。Android 为我们提供了以下几种进程通信机制(供开发者使用的进程通信 API)对...转载 2019-05-31 14:45:39 · 4867 阅读 · 0 评论 -
Android 匿名共享内存Java接口分析
转自:https://blog.youkuaiyun.com/yangwen123/article/details/9319773在Android 匿名共享内存驱动源码分析中介绍了匿名共享内存的驱动实现过程,本文在Android匿名共享内存驱动基础上,介绍Android匿名共享内存对外Android系统的匿名共享内存子系统的主体是以驱动程序的形式实现在内核空间的,同时在应用程序框架层提供了Java调用接口...转载 2019-05-31 15:19:51 · 296 阅读 · 0 评论 -
Android 匿名共享内存C++接口分析
转自:https://blog.youkuaiyun.com/yangwen123/article/details/11768329在上一篇Android 匿名共享内存C接口分析中介绍了Android系统的匿名共享内存C语言访问接口,本文在前文的基础上继续介绍Android系统的匿名共享内存提供的C++访问接口。在C++层通过引入Binder进程间通信机制可以实现跨进程访问匿名共享内存。我们知道Andro...转载 2019-05-31 16:04:56 · 469 阅读 · 0 评论 -
Android 匿名共享内存C接口分析
转自:https://blog.youkuaiyun.com/yangwen123/article/details/11757487在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口。Android系统在用户空间,C++应用程序框架层,Java层分别提供了访问接口本文首...转载 2019-05-31 16:23:54 · 482 阅读 · 0 评论 -
android eventbust使用详解
转自:https://www.jianshu.com/p/e7d5c7bda7831、EventBus 简介EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。1.1 三个角色Event:事...转载 2019-06-21 14:21:26 · 304 阅读 · 0 评论 -
Android中关于屏幕的三个小众知识(宽屏适配、禁止截屏和保持屏幕常亮)
转自:https://www.jb51.net/article/129633.htm前言宽屏适配、禁止截屏和保持屏幕常亮,这三个与屏幕有关的 Android 开发小众知识,说不定什么时候就派上用场。宽屏适配Android的屏幕适配一直以来都在折磨着我们Android开发者,越来越多的手机厂商趋向于全面屏设计,比如今年出厂的 18.5:9 屏幕比例的三星 Galaxy S8 手机,前...转载 2019-07-11 10:11:36 · 408 阅读 · 0 评论 -
Java.util.concurrent之 Executor框架与线程池
Executor的继承树关系:Executor框架是java 5 中引入的,内部使用了线程池机制。Executor框架包括:Executor, ExecutorService,Executors,ThreadPoolExecutor等。Executor ——接口public interface Executor { void execute (Runnable command...原创 2019-08-20 10:39:28 · 446 阅读 · 0 评论 -
java线程池ThreadPoolExecutor类使用详解
转自:https://www.cnblogs.com/dafanjoy/p/9729358.html在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExec...转载 2019-08-20 15:55:49 · 949 阅读 · 0 评论 -
Android匿名共享内存(Ashmem)原理
转自:https://www.jianshu.com/p/d9bc9c668ba6阅读之前,不妨先思考一个问题,在Android系统中,APP端View视图的数据是如何传递SurfaceFlinger服务的呢?View绘制的数据最终是按照一帧一帧显示到屏幕的,而每一帧都会占用一定的存储空间,在APP端执行draw的时候,数据很明显是要绘制到APP的进程空间,但是视图窗口要经过SurfaceFl...转载 2019-05-31 11:16:23 · 878 阅读 · 0 评论 -
Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能
转自:https://www.jianshu.com/p/0ea5e201260f前言在前几篇文章中介绍了如何调用系统相机拍照和使用Camera1的实现自定义相机拍照、人脸检测等功能文章传送门:Android:调用系统相机实现拍照+裁切(兼容7.0以上系统) Android: Camera相机开发详解(上) —— 知识储备 Android: Camera相机开发详解(中) ——...转载 2019-05-31 10:12:30 · 7434 阅读 · 0 评论 -
Android: Camera相机开发详解(上) —— 知识储备
转自:https://www.jianshu.com/p/f8d0d1467584前言 上一篇文章介绍了如何调用系统相机进行拍照裁剪等功能,一般情况下这些已经能满足我们的需求了。但是在有些场景和特殊需求下,比如要进行人脸检测、要不间断地抓取多张照片等等,那就需要使用原生Camera来进行开发啦 这里并不打算讲如何用代码去实现,而是先给小伙们介绍相关的知识点,等对这些知识有了大致...转载 2019-05-31 10:10:13 · 1206 阅读 · 0 评论 -
Android开发之MVVM新姿势探索
转自:https://github.com/linyongsheng/android-arch-mvvm1、同一个世界,同一个轮回网上有不少关于Android架构的讨论,如MVC, MVP,MVVM。本质上都是一种代码架构思想,并没有明显的孰优孰劣,关键看应用的场景以及实现的细节。或许你跟我一样,写过很多代码,也重构过很多次。项目代码往往起初是混沌状态,再渐至清晰明朗,又随着业务发展及程序...转载 2019-04-04 16:09:37 · 495 阅读 · 0 评论 -
Android应用架构之MVVM模式
转自:https://blog.youkuaiyun.com/u012317510/article/details/80247756早期的Android应用开发中,Activity/Fragment承担了过多的职责,它们不仅负责了应用界面的显示,而且负责了业务逻辑的处理。这样一来,Activity/Fragment很容易就变得臃肿、复杂,造成应用难以测试、维护和扩展。随着Android应用开发技术的不断发...转载 2019-04-04 16:40:09 · 413 阅读 · 0 评论 -
基于Proxy思想的Android插件框架
转自:http://www.cnblogs.com/yxwkf/p/5196235.html意义研究插件框架的意义在于下面几点:减小安装包的体积,通过网络选择性地进行插件下发 模块化升级。减小网络流量 静默升级,用户无感知情况下进行升级 解决低版本号机型方法数超限导致无法安装的问题 代码解耦现状Android中关于插件框架的技术已经有过不少讨论和实现。插件通常打包成apk...转载 2019-04-04 18:42:51 · 244 阅读 · 0 评论 -
Android 设计模式之MVC,从一个实例中来理解MVC
转自:https://blog.youkuaiyun.com/qq_36510659/article/details/79073021MVC的介绍MVC是Model-View-Controller的简称Model:模型层,负责处理数据的加载或者存储View:视图层,负责界面数据的展示,与用户进行交互Controller:控制器层,负责逻辑业务的处理那我们为什么要用到MVC模式呢?1...转载 2019-04-08 17:45:19 · 409 阅读 · 0 评论 -
Android中用到的MVP模式
转自:https://blog.youkuaiyun.com/weixin_28774815/article/details/80960779MVP:View不直接与Model进行交互,而是通过presenter来与Model交互,来达成的一种间接交互。presenter与View的交互是通过接口来进行的,更有利于添加单元测试通常View与Precenter是一对一的,但是复杂的view可以绑定多...转载 2019-04-08 18:09:07 · 253 阅读 · 0 评论 -
HashMap、Hashtable、ConcurrentHashMap的原理与区别
转自:https://www.cnblogs.com/heyonggang/p/9112731.html下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsi...转载 2019-04-08 20:11:28 · 206 阅读 · 0 评论