魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
Android
Android

Android中的线程和线程池

前言 线程在Android中是一个很重要的概念,从用途上来说,线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。由于Android的特性,如果在主线程中执行耗时操作那么就会导致程序无法及时地响应,因此耗时操作必须放在子线程中去执行。 在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都会有相应的开销。档系统中存在大量的线程时,系统会通过时间片轮转的方式调度每个线程,因此线程不可能做到绝对的并行,除非线程数量…

2018年7月5日 0条评论 5332点热度 0人点赞 daozi 阅读全文
Android

搞定Java并发-synchronized原理

前言 线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个高尚的名称叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共享数据被当前正在访问的线程加上互斥锁后,在同一个时刻,其他线程只能处于等待的状态,直到当前线程处理完毕释放该锁。在 Ja…

2018年7月2日 0条评论 4292点热度 0人点赞 daozi 阅读全文
Android

Android中CrashHandler的实现

前言 相信大家在调试android应用程序包的时候经常会遇到“应用程序没有响应”这种情况,也就是当我们的应用程序出现crash情况,这种提示方式会给用户带来很不好的体验。而且,通常crash导致的退出,因为没有走正常的退出流程,会导致数据没保存、线程没有杀死、缓存没有清空等问题。这个时候就需要一个全局CrashHandler。 这个时候做过项目同学就知道有优秀的第三方SDK,譬如国内有:Umeng统计,腾讯的Bugly,国外有:fabric的Crashlytics  等吧,都不一一细说了,使用起来都很方便,接入也很…

2018年6月29日 0条评论 4664点热度 0人点赞 daozi 阅读全文
Android

Android NDK开发-JNI基础篇

1. NDK NDK是Google开发的一套开发和编译工具集,可以生成动态链接库,主要用于Android的JNI开发。NDK 可以自动地将 so 和 Java 应用一起打包,极大地减轻了开发人员的打包工作。 NDK 提供了一份稳定、功能有限的 API 头文件声明,Google 明确声明该 API 是稳定的,在后续所有版本中都稳定支持当前发布的 API。从该版本的 NDK 中看出,这些 API 支持的功能非常有限,包含有:C 标准库(libc)、标准数学库(libm)、压缩库(libz)、Log 库(liblog)。…

2018年6月27日 0条评论 4451点热度 0人点赞 daozi 阅读全文
Android

用apksigner进行批量签名的脚本

前言 对APK进行签名,正常情况下使用Gradle进行签名或者第三方开源签名工具或插件进行签名及ADB命名,这样需要给测试或运维人员进行讲解,解释半天他们会问你有批量工具吗?那作为程序员得你,只能说有。那我给大家一个用python写的基于apksigner进行批量签名的脚本,双击就OK了。 1. V1&V2签名 在给大家放出大招之前,先卖个萌,来一起了解一下Android的签名。在Android 7.0以下版本,一直使用的是Oracle提供的V1 scheme (JAR signing)签名方案。自从9行代…

2018年6月12日 0条评论 7026点热度 0人点赞 daozi 阅读全文
Android

理解Android的Window和WindowManager

简述 在Android系统中,PopupWindow、Dialog、Activity、Toast等都有窗口的概念,但又各有不同,Android将窗口大致分为三类:应用窗口、子窗口、系统窗口。其中,Activity与Dialog属于应用窗口、PopupWindow属于子窗口,必须依附到其他非子窗口才能存在,而Toast属于系统窗口,Dialog可能比较特殊,从表现上来说偏向于子窗口,必须依附Activity才能存在,但是从性质上来说,仍然是应用窗口,有自己的WindowToken。所有的视图都是通过Window来呈现…

2018年6月9日 0条评论 5746点热度 0人点赞 daozi 阅读全文
Android

Android的ClassLoader

1. 前言 ClassLoader翻译过来就是类加载器。 阅读过JVM和Android的Dalvik与ART我们知道,Dalvik虚拟机如同其他Java虚拟机一样,在运行程序时首先需要将对应的类加载到内存中。而在Java标准的虚拟机中,类加载可以从class文件中读取,也可以是其他形式的二进制流。因此,我们常常利用这一点,在程序运行时手动加载Class,从而达到代码动态加载执行的目的。 只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源码文件会生…

2018年6月3日 0条评论 4552点热度 0人点赞 daozi 阅读全文
Android

JVM和Android的Dalvik与ART

1. JVM(Java虚拟机) JVM是Java编程语言的核心。当我们运行一个程序时,JVM负责将字节码转换为特定机器代码。JVM也是平台特定的,并提供核心的Java方法,例如内存管理、垃圾回收和安全机制等。JVM 是可定制化的,我们可以通过Java 选项(java options)定制它,比如配置JVM 内存的上下界。JVM之所以被称为虚拟的是因为它提供了一个不依赖于底层操作系统和机器硬件的接口。这种独立于硬件和操作系统的特性正是Java程序可以一次编写多处执行的原因。 JVM的结构体系 2. Dalvik 1)…

2018年5月28日 0条评论 6179点热度 0人点赞 daozi 阅读全文
Android

Android的ContentProvider

 一、概述  ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法。 ContentProvider可以指定需要共享的数据,而其他应用程序则可以在不知道数据来源、路径的情况下,对共享数据进行增删改查等操作。 在Android系统中,许多Android系统内置的数据也是通过ContentProvider提供给用户使用,例如通讯录、音视频文件和图像文件等  二、使用关系  三、类关系 CPP与CPN是一对Binder通信的C/S两端; ACR(Applicati…

2018年5月25日 0条评论 7465点热度 0人点赞 daozi 阅读全文
Android

Error:Resource shrinker cannot be used for libraries.

Error:Resource cannot be used for libraries. 意思是“library中不要使用移除无用的资源文件字段” 原因是library中使用了混淆,并移除了无用的资源文件,所以解决办法就是把该library中的shrinkResources字段移除就可以了。 大家可以试试,如果有其他解释及方案,请告知。    

2018年5月20日 0条评论 10399点热度 0人点赞 daozi 阅读全文
Android

Android的消息处理机制(Looper,Handler,MessageQueue,Message)

1.Android消息处理机制概述 Android消息处理机制实际上就是Handler的运行机制,他能够很轻松的在线程间传递数据。由于Android开发规范的限制,我们不能在主线程执行耗时操作(如网络,IO操作等),不能在子线程更新UI,所以Handler大部分用来在耗时操作与更新UI之间切换。除了Handler之外,我们还需要一个消息队列MessageQueue,用于存放Handler发送过来的Message。然后,Android中的Looper类提供了两个方法:prepare()、loop(),前者用来创建Me…

2018年5月19日 0条评论 13290点热度 0人点赞 daozi 阅读全文
Android

Android Studio:Field can be converted to a local variable

1. 解析 Field can be converted to a local varible 的完整说明是: This inspection searches for redundant class fields that can be replaced with local variables. If all local usages of a field are preceded by assignments to that field, the field can be removed and its us…

2018年5月9日 0条评论 8228点热度 0人点赞 daozi 阅读全文
Android

Android的Messenger

一. Messenger是什么 Messenger是一种轻量级的IPC方案并对AIDL 进行了封装,它实现起来比较容易。 下面Messenger的工作原理图,以便于更好的理解Messenger:   Messenger内部消息处理使用Handler实现的,所以它是以串行的方式处理客服端发送过来的消息的,如果有大量的消息发送给服务器端,服务器端只能一个一个处理,如果并发量大的话用Messenger就不合适了,而且Messenger的主要作用就是为了传递消息,很多时候我们需要跨进程调用服务器端的方法,这种需求Messe…

2018年5月8日 0条评论 4550点热度 0人点赞 daozi 阅读全文
Android

Android的Binder机制

 一.  Binder是什么 1. 直观来说,Binder是Android中的一个类,它继承了IBinder接口 2. 从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在linux中没有 3. 从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager,etc)和相应ManagerServic…

2018年5月7日 0条评论 5228点热度 0人点赞 daozi 阅读全文
Android

Android的AIDL

一、概述 AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来生成用于IPC的代码。从某种意义上说AIDL其实是一个模板,因为在使用过程中,实际起作用的并不是AIDL文件,而是据此而生成的一个IInterface的实例代码,AIDL其实是为了避免我们重复编写代码而出现的一个模板。 在Android中,默认每个应用(application)执行在它自己的进程中,无法直接调用到其他应…

2018年5月5日 0条评论 10716点热度 0人点赞 daozi 阅读全文
12345…8
搜索
联系方式

QQ群:179730949
QQ群:114559024
欢迎您加入Android大家庭
本人QQ:136049925

赐我一丝安慰
给我一点鼓励

最新 热点 随机
最新 热点 随机
解决Android 7及以上Notification.contentView为null问题 彻底解决git命令免密问题 隐藏ScrollView、RecyclerView等滚动条和去掉滑动到边界阴影的方案 Android Studio 3.4 编译Release版本广点通所有广告不显示 Android中使用System的getProperty()方法及获取Android内核版本信息 弄清楚INSTALL FAILED CONFLICTING PROVIDER问题
Android 显示触摸操作代码 研发本地化代码简要规范1 搞定Java并发-synchronized原理 Android的热更新方案之Sophix非侵入式热修复方案 Android面试题3--常用单位dp、sp、in、dpi... Android面试题7–Android项目常用框架MVC、MVP、MVVM
最近评论
宝宝 发布于 7 年前(02月27日) 哈哈哈哈
GPU Mining 发布于 7 年前(02月19日) I am just starting to learn about all of this. Tha...
Timothynix 发布于 8 年前(02月08日) Your place is valueble for me. Thanks!… http:...
趣头条 发布于 8 年前(02月08日) 鸟儿叫,花儿笑,一年一季春来到!
xing1982 发布于 8 年前(02月04日) 不错不错!内容感觉好极了!

COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备15000477号