
Android
文章平均质量分 94
weixin_41205419
这个作者很懒,什么都没留下…
展开
-
一条最长的短信息多少 Byte
中文 70 (包括标点),英文 160, 160 个字节。无意间看到一个这个题目,觉得有些奇怪,怎么不是140个字节呢,后来查阅后发现有以下博文:众所周知,一条短信是可以输入70个中文字符的。一个字符是2个字节(Byte)。一个字节是8位(bit).所以通用的计量是 一条短信可以输入70*2*8=1120 bit一个ASCII码是7bit(128个字符的标准ASCII...原创 2020-04-11 14:29:33 · 806 阅读 · 0 评论 -
intent 传递数据时的大小限制
1. Intent 传递不同大小数据时的问题Activity间通过Intent传递数据的大小限制 – 具体数据博客传 512K 以下的数据的数据可以正常传递。传 512K~1024K 的数据会出错,闪退。传 1024K 以上的数据会报错:TransactionTooLargeException考虑到 Intent 还包括要启动的 Activity 等信息,实际可以传的数据略小于 51...转载 2020-04-07 17:55:27 · 1683 阅读 · 0 评论 -
LruCache算法
前言我们在对数据进行操作的时候,为了避免流量或者性能的消耗,我们对于一些数据都会进行缓存处理,而对数据的缓存的要点不仅仅只有我们所熟悉的存储缓存和使用缓存,还有删除缓存。对于添加和获取缓存很好理解,那么为什么还要对缓存进行删除呐?原因很简单,因为我们的手机容量是有限的,如果我们拼命的写入缓存,那么终有一天内存会满导致程序奔溃,这显然不是我们想要的结果,于是我们在写入缓存的时候并非无脑写入,而是...转载 2020-04-07 17:54:10 · 237 阅读 · 0 评论 -
android的两种启动service方式及混合方式
一、startService1、通过调用startService启动服务的过程:onCreate —》onStartCommand —》onStartstartService 仅用于启动服务,如果Activity需要与Service进行通信,需利用Broadcast。2、而后,多次调用startService,服务会多次执行:onStartCommand —》onStar...原创 2020-04-07 15:44:39 · 574 阅读 · 0 评论 -
Handler中有Loop死循环为什么没有阻塞主线程
Looper 死循环为什么不会导致应用卡死,会消耗大量资源吗?主线程的消息循环机制是什么(死循环如何处理其它事务)?ActivityThread 的动力是什么?(ActivityThread执行Looper的线程是什么)Handler 是如何能够线程切换,发送Message的?(线程间通讯)子线程有哪些更新UI的方法。子线程中Toast,showDialog,的方法。(和子线程...转载 2020-04-07 14:47:18 · 966 阅读 · 0 评论 -
Android 线程池
使用线程池的优点复用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。能够有效的控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象。能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能线程池参数CorePoolSize线程的核心线程数。默认情况下,核心线程数会在线程中一直存活,即使它们处于闲置状态。如果将Thre...原创 2018-04-04 18:20:16 · 180 阅读 · 0 评论 -
Android 四大组件之Service使用及特点
1. 生命周期 常用方法官方说明图示意图在Service的生命周期里,常用的有: 4个手动调用的方法手动调用方法 作用 startService() 启动服务 stopService() 关闭服务 bindService() 绑定服务 unbindService() 解绑服务 5个自动调用的方法内部自动调用的方法 ...转载 2018-04-16 18:30:38 · 4457 阅读 · 0 评论 -
Service与IntentService的区别
简单描述一下ServiceService是用于后台服务的,当应用程序被挂到后台的时候,为了保证应用某些组件仍然可以工作而引入了Service这个概念。那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR,为了解决这样的问题,引入了IntentService简单描...转载 2018-04-04 18:19:13 · 983 阅读 · 0 评论 -
Android 四大组件之Activity特征及交互
创建Activity定义类继承自Activity类;2)在manifest的Application节点中声明<activity>节点; 生命周期 onCreate():当activity是被创建时候,会自动运行该方法。该方法做一些初始化动作,比如创建views,设置数据到list等等,该方法提供了一个Bundle类型的变量,该变量中有这个activ...转载 2018-04-16 18:30:32 · 668 阅读 · 0 评论 -
异步AsyncTask的使用与原理分析
在Android中,我们更新UI的操作必须要在主线程(UI线程)中进行,而下载图片、文件这种操作必须要在子线程中进行,Android为我们提供了Handler机制,实现了子线程与主线程之间的通信。通常做法就是先new出一个子线程Thread,在子线程中完成下载操作后,通过handler发送一条Message给主线程,主线程收到消息后,就可以进行UI的更新工作了,如下:Handler mHadler...转载 2018-04-04 18:19:05 · 607 阅读 · 0 评论 -
Android-Handler机制详解 Handler
1、handler是什么?答:handler是更新UI界面的机制,也是消息处理的机制,我们可以发送消息,也可以处理消息 2、为什么要有Handler?答:Android在设计的时候,封装了一套消息创建、传递、处理机制,如果不遵循这样的机制就没办法更新UI信息,就会抛出异常。 3、handler怎么用?答:1、post(Runnable); 2、postDelayed(Runnable ...转载 2018-04-04 18:18:45 · 307 阅读 · 0 评论 -
AsyncTask和thread以及Service和IntentService的关系和区别
首先回答你第一个,什麽是线程,还有AsyncTask,估计是你大概的线程通讯.1、同步:在一个线程执行,先执行完了前面的代码,才会执行后面的代码,是阻塞的。2、异步:开启一个新的线程执行,不会等前面的代码执行完,就会执行后面的代码,是非阻塞的。3、什麽是main(UI)线程:android启动的第一个线程。主要负责处理ui和事件的工作。【特别注意】1、更新ui只能在...转载 2018-04-04 18:18:27 · 760 阅读 · 0 评论 -
Android 四大组件之BroadcastReceiver特征
1. 定义即 广播,是一个全局的监听器,属于Android四大组件之一Android 广播分为两个角色:广播发送者、广播接收者2. 作用监听 / 接收 应用 App 发出的广播消息,并 做出响应3. 应用场景Android不同组件间的通信(含 :应用内 / 不同应用之间) 多线程通信 与 Android 系统在特定情况下的通信如:电话呼入时、网络可用时...原创 2018-04-12 15:49:21 · 342 阅读 · 0 评论 -
Android面试题集
手画一下Android系统架构图,描述一下各个层次的作用?Android系统架构图从上到下依次分为六层:应用框架层 进程通信层 系统服务层 Android运行时层 硬件抽象层 Linux内核层Activity如与Service通信?可以通过bindService的方式,先在Activity里实现一个ServiceConnection接口,并将该接口传递给bindSe...转载 2018-04-17 11:44:14 · 453 阅读 · 0 评论 -
Android网络编程面试题集
网络编程TCP与UDP有什么区别?TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低...转载 2018-04-17 11:48:19 · 2647 阅读 · 0 评论 -
Android WebView 总结
总结 Android WebView 常用的相关知识点,令包含以下干货内容分析:Js注入漏洞、WebView 遇到的坑、JsBridge 原理以及框架使用(JsBridge,DSBridge-Android)、缓存机制应用、性能优化、腾讯开源框架 VasSonic (之后会进行代码分析)。一、简介这部分主要介绍下 WebView,WebView 是一个用来显示 Web 网页的控件,继承自 Abso...转载 2018-04-17 16:09:02 · 1523 阅读 · 0 评论 -
保活实践
前言进程保活的关键点有两个,一个是进程优先级的理解,优先级越高存活几率越大。二是弄清楚哪些场景会导致进程会kill,然后采取下面的策略对各种场景进行优化:提高进程的优先级在进程被kill之后能够唤醒进程优先级Android一般的进程优先级划分:1.前台进程 (Foreground process)2.可见进程 (Visible process)3.服务进程 (Service process)4.后...转载 2018-04-17 14:56:08 · 366 阅读 · 0 评论 -
Android Binder跨进程通信的原理
目录目录1. Binder到底是什么?中文即 粘合剂,意思为粘合了两个不同的进程网上有很多对Binder的定义,但都说不清楚:Binder是跨进程通信方式、它实现了IBinder接口,是连接 ServiceManager的桥梁blabla,估计大家都看晕了,没法很好的理解我认为:对于Binder的定义,在不同场景下其定义不同定义在本文的讲解中,按照 大角度 -> 小角度 去分析Binder,...转载 2018-04-17 15:08:09 · 219 阅读 · 0 评论 -
Android四大组件之ContentProvider 使用及原理
ContentProvider作为Android四大组件之一,平时写自己的ContentProvider比较少,但是用到ContentProvider地方还是有的,比如去获取通讯录信息,这其实就间接的使用到了通讯录程序的ContentProvider组件.先简单说一下ContentProvider组件.后面重点分析源码了解ContentProvider运行的过程.ContentProvider可以...转载 2018-04-16 18:31:00 · 551 阅读 · 0 评论 -
Android Binder机制
Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection): 管道(Pipe)、信号(Signal)和跟踪(Trace)、插口(Socket)、报文队列(Message)、共享内存(Share Memory)和信号量(Semaphore)。本文详细介绍Binder作为Android主要IPC方...转载 2018-04-16 18:30:15 · 143 阅读 · 0 评论 -
ActivityManagerService
本章所涉及的源代码文件名及位置:· SystemServer.javaframeworks/base/services/java/com/android/server/SystemServer.java· ActivityManagerService.javaframeworks/base/services/java/com/android/server/am/ActivityManagerS...转载 2018-04-16 18:30:25 · 657 阅读 · 0 评论 -
Android序列化Serializable和Parcelable的理解和区别
一、android为什么要序列化?什么是序列化,怎么进行序列化why为什么要了解序列化?—— 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。what什么是序列化 —— 序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储...转载 2018-04-16 18:30:08 · 282 阅读 · 0 评论 -
深层次面试题
java一. 类的加载过程,Person person = new Person();为例进行说明。 1).因为new用到了Person.class,所以会先找到Person.class文件,并加载到内存中;2).执行该类中的static代码块,如果有的话,给Person.class类进行初始化;3).在堆内存中开辟空间分配内存地址;4).在堆内存中建立对象的特有属性,并进...转载 2018-04-16 18:32:38 · 876 阅读 · 0 评论 -
android GC回收机制
不同系统不同型号的手机的GC机制是不同的System.gc()调用结果不同(立即GC或无反应)废弃内存回收频率不同大规模GC临界值不同对于加载图片来说,内存增加量是远大于图片大小的。临时变量的GC时机是完全不能保证的,我们可以理解为,GC线程还没有转到这个地方。System.gc()并不是立刻执行GC的。每点击一次按钮,内存消耗增加0.02MB,世界上没有免费的午餐,点击事件内部是会有新的对象产生...转载 2018-04-16 18:29:58 · 5644 阅读 · 0 评论 -
android 自定义控件
View的原理介绍View表示的的屏幕上的某一块矩形的区域,而且所有的View都是矩形的;如同简介中介绍,View是不能添加子View的,而ViewGroup是可以添加子View的。ViewGroup之所以能够添加子View,是因为它实现了两个接口:ViewParent 和 ViewManager;Activity之所以能加载并且控制View,是因为它包含了一个Window,所有的图形化界面都是由...转载 2018-04-16 18:29:38 · 301 阅读 · 0 评论 -
android 事件分发消费机制
onTouch是优先于onClick执行的,onTouch方法返回true就认为这个事件被onTouch消费掉了,因而不会再继续向下传递,不会执行onClick然后我们来看一下View中dispatchTouchEvent方法的源码:[java]view plaincopypublicbooleandispatchTouchEvent(MotionEventevent)...原创 2018-04-16 18:29:49 · 293 阅读 · 0 评论 -
http和https的区别与联系
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,...转载 2018-05-14 16:03:55 · 169 阅读 · 0 评论 -
DES、AES、RSA等常用加密算法介绍与比较
加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。 常见的对称加密算法主要有DES、3DES、AES等,常见的非对称算法主要有RSA、DSA等,散列算法主要有SHA-1、MD5等。 对称算法又可分为两类。一次只对明文中的单个位(有时对字节)运算的算法称为序列算法或序列密码。另一类...转载 2018-05-14 16:27:57 · 3641 阅读 · 0 评论 -
android 面试题及答案
JAVA 相关1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?静态内部类:使用static修饰的内部类内部类:就是在某个类的内部又定义了一个类,内部类所嵌入的类称为外部类匿名内部类:使用new生成的内部类因为内部类的产生依赖于外部类,持有的引用是类名.this2.Java中try catch finally的执行顺序先执行try中代码,如果发生异...转载 2018-05-08 15:42:24 · 4711 阅读 · 0 评论 -
Android 面试题整理
Java部分1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。2.XML包括哪些解释技术,区别是什么?DOM和SAXDOM将文档解...转载 2018-05-08 15:42:53 · 1081 阅读 · 0 评论 -
Android 高新面试题
基础activity生命周期图解注意:锁定屏与解锁屏幕 只会调用onPause(),而不会调用onStop方法,开屏后则调用onResume()。在实际操作中会有所出入,比如在三星手机测试的时候锁定手机调用了onPause()和onStop()方法,解锁时候调用的是:onRestart(),onStart()和 onResume()方法。介绍不同场景下Activity生命周期的变化过程启动Acti...转载 2018-05-08 15:42:33 · 932 阅读 · 0 评论 -
Android 40个面试点
1、 Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口Con...转载 2018-05-08 15:05:06 · 365 阅读 · 0 评论 -
Android 面试题中高级
1、Activity生命周期?onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy() onReast() 2、Service生命周期?service 启动方式有两种,一种是通过startService()方式进行启动,另一种是通过bindService()方式进行启...转载 2018-05-08 15:10:17 · 2533 阅读 · 0 评论 -
Android 面试中高级上
1、java中==和equals和hashCode的区别 基本数据类型的==比较的值相等. 类的==比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如String等重写了equals方法.hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等比较是否为...转载 2018-05-08 15:28:00 · 3174 阅读 · 0 评论 -
Binder机制的原理(二)
一、概述Android系统中,涉及到多进程间的通信底层都是依赖于Binder 机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。二、使用Binder的原因1.性能方面(1)Binder相对出传统的Socket方式,更加高效。Binder数据拷贝只需要一次,而管道、消息队列、Socket都需要2次2.安全方面Binde...转载 2018-07-20 15:09:58 · 391 阅读 · 0 评论 -
Android 动画
动画种类Android 动画可以归纳为以下几种: 视图动画(View 动画) 帧动画(Frame 动画、Drawable 动画) 属性动画 触摸反馈动画(Ripple Effect) 揭露动画(Reveal Effect) 转场动画 & 共享元素(Activity 切换动画) 视图状态动画(Animate View State ...转载 2018-11-08 18:51:21 · 154 阅读 · 0 评论 -
List Map Set的区别
list和set是实现了collection接口的。List:1.可以允许重复的对象。 2.可以插入多个null元素。 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。 4.常用的实现类有ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedL...原创 2018-11-23 15:17:15 · 135 阅读 · 0 评论 -
EventBus与RxBus区别
先介绍一下EventBusEventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求...转载 2018-12-07 18:42:18 · 1170 阅读 · 0 评论 -
RxBus 使用及原理分析
RxJava目前已经很火了,如果你尚未了解请看这里。对于RxJava这里不多做介绍。RxBus并不是一个库,而是一种模式。相信大多数开发者都使用过EventBus,作为事件总线通信库,如果你的项目已经加入RxJava和EventBus,不妨用RxBus代替EventBus,以减少库的依赖。一、添加RxJava和RxAndroid依赖 //RxJava and RxAndroid...转载 2018-12-07 22:20:43 · 551 阅读 · 0 评论 -
RxJava2+Retrofit2+OkHttp3的基础、封装和项目中的使用
简单介绍Retrofit、OKHttp和RxJava之间的关系:Retrofit:Retrofit是Square公司开发的一款针对Android 网络请求的框架(底层默认是基于OkHttp 实现)。 OkHttp:也是Square公司的一款开源的网络请求库。 RxJava :"a library for composing asynchronous and event-based prog...转载 2018-12-07 22:44:57 · 492 阅读 · 0 评论