摘要:
参考:Android targetSdkVersion 原理如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersionGoogle 官方文章:Picking your compileSdkVersion, minSdkVersion, and t 阅读全文
摘要:
一、何谓Atomic? Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被 阅读全文
摘要:
注意:使用特殊域变量(volatile)不能实现线程同步 同步的方法: 一、同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 注: synchroniz 阅读全文
摘要:
一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 二、哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那 阅读全文
摘要:
2、JVM内存管理 JVM将内存划分为6个部分:PC寄存器(也叫程序计数器)、虚拟机栈、堆、方法区、运行时常量池、本地方法栈 PC寄存器(程序计数器):用于记录当前线程运行时的位置,每一个线程都有一个独立的程序计数器,线程的阻塞、恢复、挂起等一系列操作都需要程序计数器的参与,因此必须是线程私有的。 阅读全文
摘要:
0.1 先对Dalvik以及ART做简单介绍: 什么是Dalvik: Dalvik是Google公司自己设计用于Android平台的Java虚拟机。dex格式是专为Dalvik应用设计的一种压缩格式,适合于内存和处理器速度有限的系统。Dalvik允许同时运行多个虚拟机的实例,并且每一个应用作为独立的 阅读全文
摘要:
一.Android省电开发之性能优化 电量优化 Android应用开发中的网络、定位、传感器等都是比较耗电的特性,我们应该正确使用API来有效降低应用的耗电量。 1.BroadcastReceiver: 在代码实现中需要尽量避免无用操作代码的执行,减少应用损耗的电量。 对于BroadcastRece 阅读全文
摘要:
前言 电量优化,这个名词在传统PC时代,我们基本很少听见。然而到了诺基亚时代,我们也同样很少关注。直到了移动互联的智能机时代。电量优化才被慢慢的重视起来。可能的原因如下: 移动设备,不能一直使用电源供电,且电池容量有限 对于用户来说, 实际上App的电量损耗也是用户体验的一个方面。 特别是当今人们对 阅读全文
摘要:
一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connection = null; //设置下载请求属性 connection.setRequestPropert 阅读全文
摘要:
1. 前言 在Android开发中,如果对一个简单的功能,每次修改代码都重新运行到设备中进行测试,会浪费大量时间,降低开发工作效率。如果使用单元测试,编写单元测试类,执行测试单元测试类就可以对某些功能进行测试,大大提升了开发工作效率。 2. 添加单元测试支持 在AndroidStudio项目中,如果 阅读全文
摘要:
在Android开发过程中,我们往往忽略了单元测试功能, 主要还能还是大家觉得 真机在手,运行调试特别直观。 不过如果我们能够养成单元测试的习惯,相信能更加提升我们应用开发的速度。 当我们创建一个Android Studio项目时,我们会发现项目结构中,多了一个test目录 src/test/jav 阅读全文
摘要:
一,下载 安装android-ndk开发包 NDK各个版本链接 二,新建项目NDKDemo,选择空Activity就可以;(注:Android studio 2.2,可通过SDK Tools 添加LLDB,CMake,更方便的开发jni程序了) 三,按F12,配置项目NDK路径: 四,在MainAc 阅读全文
摘要:
? 通配符类型 - <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类; <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object; 上界<? extends T>不能往里存,只能往外取 比 阅读全文
摘要:
1.通知渠道:开发者可以自定义应用的通知内容类别,为用户提供一个可以对通知精细控制的接口,用户可以对通知 进行精细的掌控 开发指南 创建通知渠道的步骤: 创建 NotificationChannel 对象,并设置应用内唯一的通知 ID。 配置通知渠道的属性,比如提示声音等。 在 Notificati 阅读全文
摘要:
一.概述 我们可以在客户端发送一个Message给服务端,在服务端的handler中会接收到客户端的消息,然后进行对应的处理,处理完成后,再将结果等数据封装成Message,发送给客户端,客户端的handler中会接收到处理的结果。 有这么几个特点: 基于Message,相信大家都很熟悉 支持回调的 阅读全文
摘要:
Android热更新方案Robust 相信很多人都认识了解过 热修复、热更新、热补丁(对于这个技术也没有特别标准的一种叫法,下面我统一叫热更新),之后的一年里,各种热更新方案如雨后春笋般出现,比较耳熟能详的就有Nuwa、Tinker、Andfix 和 Dexposed 等等,他们之间的区别以及优缺点 阅读全文
摘要:
一、问题 CountDownTimer 使用比较简单,设置 5 秒的倒计时,间隔为 1 秒。 final String TAG = "CountDownTimer"; new CountDownTimer(5 * 1000, 1000) { @Override public void onTick( 阅读全文
摘要:
Android N 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。 本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。 如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。 电池和内存 Android N 包括旨在延长设备电池寿命和减少 阅读全文
摘要:
服务(Service)是android系统中非常重要的组件。Service可以脱离应用程序运行。也就是说,应用程序只起到一个启动Service的作用。一但Service被启动,就算应用程序关闭,Service仍然会在后台运行。 android系统中的Service主要有两个作用:后台运行和跨进程通讯 阅读全文
摘要:
广播是一种被动跨进程通讯的方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通,在应用程序中发送广播比较简单。只需要调用sendBroadcast方法即可。该方法需要一个Intent对象。通过Intent对象可以 阅读全文
摘要:
Content Provider ContentProvider在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行添删改查。关于数据共享,以前我们学习过文件操作模 阅读全文
摘要:
访问其他应用程序的ActivityActivity既可以在进程内(同一个应用程序)访问,也可以跨进程访问。如果想在同一个应用程序中访问Activity,需要指定Context对象和Activity的Class对象,代码如下: Intent intent = new Intent(this, Test 阅读全文
摘要:
今天咱们是用RecyclerView来实现这个多种Item的加载. 其实最关键的是要复写RecyclerView的Adapter中的getItemViewType()方法 这个方法就根据条件返回条目的类型 这个MoreTypeBean 是用来传数据的 没必要跟我写的一样, 其实就是从activity 阅读全文
摘要:
使用listview多布局会出现一点问题: 由于多个item布局给单一的item布局是不一样的,使用起来,contentview的复用会出现问题。 避免出现问题的有这几个方法: 1.重写 getViewTypeCount() – 该方法返回多少个不同的布局 2.重写 getItemViewType( 阅读全文
摘要:
一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码设置。 今天想学一下Android屏幕横竖屏切换,但是网上很多知识不准确或不正确,这里我还是自己总结一篇文章,供大家参考。 一.屏幕横竖屏切换的代码 很多文章一上来就将什么生命周期或者乱七八糟的, 阅读全文
摘要:
1、assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的; (1)使用方法 AssetManager assets = this.getResources().getAssets(); ((TextView)findViewByI 阅读全文
摘要:
“可以毫不夸张的说,Android的framework层主要是由WMS、AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对framework的了解至少有百分之五十”。这是《Android源码与设计模式》作者的原话,最近学习WMS和AMS 阅读全文
摘要:
很多人都对Handler的机制有所了解,如果不是很熟悉的可以看看我 如果看过源码的人都知道,在处理消息的时候使用了Looper.loop()方法,并且在该方法中进入了一个死循环,同时Looper.loop()方法是在主线程中调用的,那么为什么没有造成阻塞呢? 首先我们需要从Android程序启动的入 阅读全文
摘要:
我们知道Activity的生命周期包括onCreate、onStart、onResume、onRestart、onStop、onDestory、onSaveInstanceState、onRestoreInstanceState等等, 那么是谁调用了它呢? 答:是ActivityThread调度的, 阅读全文
摘要:
关键:public final void notifyItemChanged(int position, Object payload) RecyclerView局部刷新大家都遇到过,有时候还说会遇见图片闪烁的问题。 如果想单独更新一个item,我们通常会这样做,代码如下: mLRecyclerVi 阅读全文
摘要:
一 概述 DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集-》新数据集的最小变化量。 说到数据集,相信大家知道它是和谁相关的了,就是我的最爱,RecyclerView。 就我使用的这几天来看,它最大的用处就是在RecyclerView刷新时,不再 阅读全文
摘要:
我想实现如下的场景,判断当前Android手机上是否正在播放音乐,如果是,通过某个特定的手势, 或者点击某个按键,将当前我正在听的音乐共享出去。 第一步,就是判断当前是否有音乐正在播放。 最开始我想得有点复杂,以为要深入framework或更下层去做手脚才行,找了一下资料,发现AudioManage 阅读全文
摘要:
转载 来源:zxm317122667的专栏,https://www.2cto.com/kf/201608/536175.html Android开发中时常会遇到内存泄漏的问题,而Android系统对单个App又有一定的内存限制,此值可以通过一下方式获取: ? 1 2 3 <code>Activity 阅读全文
摘要:
Trace文件怎么获取? traces.txt只保留最后一次ANR的信息,Android系统有个DropBox功能功能,它能记录系统出现的crash错误.因此保留有发生过的ANR的信息.(log路径:/data/system/dropbox) 获取系统crash log: adb shell dum 阅读全文
摘要:
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Li_Qing_Xue/article/details/78919499 图片加载很是重要,我也对比过别的库,觉得还是Glide好用,我只是简单的分享下我开发用到的相关知识,整理下项目相关的库,废话不多 阅读全文
摘要:
一、背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构。现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Android 网络请求的框架。底层基于OkHttp 实现,OkHttp 已经得到了google 官方的认可Ok 阅读全文
摘要:
在我们平常开发中经常会用到Fragment,当我们使用Fragment时一般是通过new Fragment的构造方法来实现,如果我问你怎么向一个Fragment传递参数,你是不是会首先想到通过构造方法,当面试被问到这个问题的时候我也是这么想的,后来发现自己错了,现在给大家讲一下究竟该怎么做。 首先我 阅读全文
摘要:
Android是开源的,不同的手机厂商都有自己定制的系统,所以这就给开发者带来了ROM适配难题。在一些群里面经常看到有人因为手机适配问题,说这个手机坑,那个手机坑,其实那是没有对ROM定制系统的一些变更了解,导致了盲目的说出这些指责的话。如果你熟悉了,也就会少走很多弯路。下面这篇文章就来讲一下几个主 阅读全文
摘要:
概述 上一篇简单的认识了Socket以及他的使用,在学习过程中看到了WebSocket的身影,于是乎百度了一把,这货也可以做全双工的网络通讯,而且是html5提出来的新东西!程序员嘛!就是要对新的东西充满了好奇! WebSocket 引用API里面的一句话,WebSocket是HTML5开始提供的一 阅读全文
摘要:
1. 如何自定义权限 Android允许我们使用permission标签,在Manifest文件中定义属于自己的权限,一个例子如下, <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.andr 阅读全文