android基础总结
Mr Cui
对待过去,最好的心态该是:所谓拥有,皆非束缚。所有过往,皆为序章。
展开
-
android focused、pressed、selected同时使用时的问题
问题描述:在selector只使用pressed属性时,view.isSelected= true,可是view的状态变为选中(及selector中pressed状态激活),但是对于TV项目使用遥控器控制,在控制时主要是移动焦点(focus)来更换选中状态,所以要求selector中也必须增加state_focused的状态和state_selected的状态,但是问题来了,增加这两个状态后v...原创 2019-08-23 15:06:46 · 1513 阅读 · 0 评论 -
Android开发——Android中常见的4种线程池(保证你能看懂并理解)
文章目录0.前言1.凡事得靠ThreadPoolExecutor(铺垫环节,懂的直接跳过)2. Android中的四类线程池2.1 FixThreadPool(一堆人排队上公厕)2.2 SingleThreadPool(公厕里只有一个坑位)2.3 CachedThreadPool(一堆人去一家很大的咖啡馆喝咖啡)2.4 ScheduledThreadPool(4个里面...转载 2019-03-03 20:45:22 · 339 阅读 · 0 评论 -
android 高概率面试题原题
出处:http://www.cnblogs.com/ldq2016/原文为前40题,本文做后续更新文章目录1.手画一下Android系统架构图,描述一下各个层次的作用?2.Activity如何与Service通信?3.Service的生命周期与启动方法有什么区别?4.广播分为哪几种,应用场景是什么?5.ContentProvider、ContentResolver与ContentObserve...原创 2019-03-14 23:43:07 · 737 阅读 · 0 评论 -
java最优冒泡排序
原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参...原创 2019-03-05 19:54:00 · 669 阅读 · 0 评论 -
快速排序(java实现)
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放...转载 2019-03-05 19:27:05 · 172 阅读 · 0 评论 -
Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
这个问题很简单,概念理解问题,不需要把app启动源码牵扯进来搞得很复杂。程序无响应:主线程执行任务时间较长,导致其他需要立刻在主线程处理的事件无法得到处理。线程阻塞:线程处于等待状态线程结束:线程的run方法返回阻塞与程序无响应没有必然关系,虽然主线程在没有消息可处理的时候是阻塞的,但是只要保证有消息的时候能够立刻处理,程序是不会无响应的。阻塞与线程退出也没有必然联系,线程完全可以在不阻...原创 2019-02-26 16:24:15 · 1426 阅读 · 1 评论 -
SharedPreference进程共享及性能优化
进程共享条件1.sharedUserId相同我们知道,Android上的各个APP是用户分离的,每个APP都有不同的UserId,这种共享数据的方式要求这两个APP必须是相同的UserId。在AndroidManifest.xml中的manifest标签,我们需要设置两个APP的sharedUserId,如下:<?xml version="1.0" encoding="utf-8"?...原创 2019-02-26 13:17:33 · 789 阅读 · 0 评论 -
TCP的三次握手与四次挥手理解及面试题(很全面)
转载出处 https://blog.csdn.net/qq_38950316/article/details/81087809本文经过借鉴书籍资料、他人博客总结出的知识点,欢迎提问文章目录三次握手过程理解四次挥手过程理解常见面试题序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报...转载 2019-03-04 22:46:24 · 2299 阅读 · 0 评论 -
Android中常用设计模式
介绍Java 中一般认为有 23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。...转载 2019-02-24 23:39:06 · 218 阅读 · 0 评论 -
Android的消息循环机制 Looper Handler类分析
Looper类说明Looper 类用来为一个线程跑一个消息循环。线程在默认情况下是没有消息循环与之关联的,Thread类在run()方法中的内容执行完之后就退出了,即线程做完自己的工作之后就结束了,没有循环的概念。 调用Looper类的 prepare() 方法可以为当前线程创建一个消息循环,调用loop() 方法使之处理信息,直到循环结束。大多数和消息循环的交互是通过 Handler...原创 2019-02-18 00:27:29 · 240 阅读 · 0 评论 -
为何SurfaceView能够在非UI线程中刷新界面
SurfaceView与View的刷新方法都是一样的,通过lockCanvas和unlockCanvasAndPost方法来进行画的,但SurfaceView能在UI线程中刷新,也能在其它线程中刷新,而View只能在UI线程中刷新,View的刷新有一个checkThread(在ViewRootImp.java中)的判断,如果不是在UI线程中就会抛异常, 这是google人为这样设计的,不让其它线程...原创 2019-03-03 21:39:24 · 3012 阅读 · 0 评论 -
安卓Activity跳转的几种方式
本文转载于http://blog.sina.com.cn/s/blog_5140274d0100q4j7.html,本人仅作为学习交流之用,请大家尊重原创。第一种方式,用action来跳转。使用Action跳转,如果有一个程序的 AndroidManifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent 就与这个目标Ac...转载 2019-03-17 12:36:50 · 19514 阅读 · 0 评论 -
Android 有线和无线网监听
全类型(gprs、以太网、wifi)网络连接状态监听:网络状态监听public class NetWorkChangReceiver extends BroadcastReceiver { private NetWorkChangeListener netWorkChangeListener; public NetWorkChangReceiver(NetWorkChang...原创 2019-04-30 14:56:06 · 2937 阅读 · 0 评论 -
android获取设备唯一标识
这里列举了获取所有可以获取到的设备唯一识别码:getDeviceId()。我的设备是TV,获取不到IMEI,但是有以太网口,所以最好的办法是获取以太网mac作为唯一标识。public class MobileInfoUtil { private static String wifiTag = "wlan0";//无线标志,关闭wifi开关后获取不到 private stati...原创 2019-04-30 14:49:06 · 3128 阅读 · 0 评论 -
gridview屏幕右侧留有空白缝隙问题解决
问题:item的宽度设为match_parent,horizontalSpacing设为想要的固定值,例如2px,结果显示屏幕右侧有空白缝隙。原因:多列item平分屏幕宽度减去horizontalSpacing的剩余,每个item的宽度不一定为整数,但是px为item最小单位,系统为了item可以完整显示为舍去小数,最后造成有n个px的空白。解决方案:gridview的最大宽度设为超出屏幕一定...原创 2019-04-14 15:42:33 · 910 阅读 · 0 评论 -
Android app崩溃捕获及自动重启
public class CrashHandler implements UncaughtExceptionHandler { public static final String TAG = "CrashHandler"; private static CrashHandler INSTANCE = new CrashHandler(); /** 系统默认的Uncaug...原创 2019-04-08 16:59:04 · 2720 阅读 · 1 评论 -
drawable setState()失效解决
drawable.setState(STATE_NORMAL);后加一句invalidate();刷新UI原创 2019-04-08 09:25:33 · 689 阅读 · 0 评论 -
gradle离线配置
1.配置gradle的引用目录2.指定需要的gradle版本3.去下载对应版本4.将下载好的压缩包放到下面目录里5.重启AS这样就完成离线配置了。下面讲一下这些配置的关联性步骤一指定的目录就是as默认加载gradle的目录,所以只要那个目录里有了需要的文件就不会再去下载了,但是有一个需要特别注意的点:步骤一配置的是 I:/Program Files (x86)/androi...原创 2019-04-01 23:41:08 · 4047 阅读 · 1 评论 -
StateListDrawable Drawable增加多个状态
StateListDrawable 用于组织多个 Drawable 对象。当使用 StateListDrawable 作为目标组件的背景、前景图片时,StateListDrawable 对象所显示的 Drawable 对象会随目标组件的状态的改变而自动切换。定义 StateListDrawable 对象的 XML 文件的根元素为 ,该元素可以包含多个 元素,该元素可以指定如下属性:State...原创 2019-04-10 14:04:29 · 5406 阅读 · 0 评论 -
Android框架组件--Lifecycle的使用
1.前言Lifecycle是Google推出的一系列的框架组件的其中一个,主要是用来感知Activity和Fragment的生命周期。本文主要介绍如何使用Lifecycle。2.一个常见的开发例子public class TestActivity extends Activity{ @Override protected void onCreate(@Nullable Bu...转载 2019-03-18 20:18:12 · 293 阅读 · 0 评论 -
Android 画三角形shape
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/shape_id"> <!-- 正三角 --> ...原创 2019-03-25 11:14:14 · 12658 阅读 · 0 评论 -
android长连接的所有方式及分析
文章目录实现长连接的方式方案优缺点比较push原理及实现主流app常用方案:1. 使用第三方的长连接服务2. 使用NIO等方案实现长连接服务3. 使用MINA等第三方框架实现长连接4.websocket实现及才坑记录实现长连接的方式http发送心跳包轮训的方式xmppwebsocket方案优缺点比较选择用http,这种实现方式是通过轮询来实现的,或者算是心跳包,不过也会影响一定...原创 2019-02-17 20:42:30 · 9290 阅读 · 1 评论 -
fragment replace和add区别
首先获取FragmentTransaction对象:FragmentTransaction transaction = getFragmentManager().beginTransaction();两种方法不同之处:是否要清空容器再添加fragment的区别,用法上add配合hide或是remove使用,replace一般单独出现。添加一般会配合hide使用:transaction....原创 2019-02-17 19:19:42 · 3424 阅读 · 0 评论 -
自定义控件,圆角矩形(drawRoundRect)
一直不太明白,自定义控件中圆角矩形的参数,今天终于搞明白啦,所以分享给大家。先来看画圆角矩形的关键语句 RectF oval3 = new RectF(150,20,180,40); canvas.drawRoundRect(oval3, 20, 15, p);12第一句是建立矩形,参数的意思是第二句话:重点来了 参数一:矩形对象参数二:圆角的x半径(椭圆的长轴的一半...转载 2019-01-09 13:47:59 · 2929 阅读 · 0 评论 -
getMeasuredHeight()与getHeight() 以及MeasureSpec.getSize()
getMeasuredHeight()返回的是原始测量高度,与屏幕无关,getHeight()返回的是在屏幕上显示的高度。实际上在当屏幕可以包裹内容的时候,他们的值是相等的,只有当view超出屏幕后,才能看出他们的区别。当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的高度。例:<RelativeLayout xmlns:android=...原创 2019-01-09 13:33:09 · 2141 阅读 · 1 评论 -
动画差值器属性介绍
Android开发中必定会涉及到动画方面的效果,那么就会遇到一个问题,如果控制动画开始速度,与结束速度。还有其他的一些效果我们可以在xml里面设置属性复制代码android:interpolator="@android:anim/accelerate_interpolator" 设置动画为加速动画(动画播放中越来越快)android:interpolator="@android:anim/...原创 2019-01-18 21:15:47 · 228 阅读 · 0 评论 -
Activity转场动画设置
文章目录使用场景撸代码5.0系统以上使用场景从一个Activity A跳转到另外一个Activity B,B页面从一个自定义的动画中出现,生活中常见的app都会自定义一个动画,也有的是手机里面定制好的原生动画,这里只谈加载B页面时的动画,A页面动画不理会撸代码一、先写两个动画进入和退出时候用的(动画根据具体需要自行定义即可,但系统支持的时间最多300毫秒,过了这个时间推页面退出的时候会直...原创 2019-01-18 19:56:07 · 2449 阅读 · 0 评论 -
OnNewIntent四种启动模式下的调用时机
Activity启动模式、Intent Flags、taskAffinity、task和back stack总结1.singleInstance模式:第一次进入:onCreate onStart在栈顶再次进入: onNewIntent不在栈顶再次进入:onNewIntent onRestart onStart按home键再次进入:onRestart onStart按返回键:onRest...原创 2019-01-18 15:30:08 · 539 阅读 · 0 评论 -
Android系统自带Spinner+Adapter基础
属性:android:spinnerMode="" 下拉菜单的展示方式属性值:dropdown-下拉方式(默认的) dialog-对话框方式如果下拉方式是dialog,那么可以指定标题android:prompt="@string/title"(只能引用,不能直接写文字)android:entries="@array/books" 填充下拉菜单的内容填充方式1.属性填充:数据源不会经常发...转载 2019-01-02 20:33:17 · 2331 阅读 · 0 评论 -
Android网络连接判断与处理
转载自:https://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)...转载 2018-12-30 12:47:37 · 570 阅读 · 0 评论 -
support/v4/animation/AnimatorCompatHelper 找不到
原因:使用的v4包中没有这个类,有两种情况:1.有多个v4包且版本不一致,运行时使用的其中一个最新版本的v4包不包含这个类;2.只有一个v4包且此版本中不包含这个类。 分析:高版本v4包中没有这个类,经查看源码发现supprot-24.2.1中有这个类,而support-26.0.0中没有,具体临界版本是多少没有深入研究解决方法:1.如果是第一种情况且知道多个...原创 2018-10-30 17:25:01 · 1803 阅读 · 1 评论 -
EditText禁止输入中文或禁止emoji或只能输入英文和数字
禁止输入中文:edit.setKeyListener(new DigitsKeyListener() { @Override public int getInputType() { return InputType.TYPE_TEXT_VARIATION_PASSWORD; } @Override protected char[] getA...原创 2018-06-28 16:24:50 · 747 阅读 · 0 评论 -
android中对Canvas.drawCircle()方法的理解
功能说明该方法用于在画布上绘制圆形,通过指定圆形圆心的坐标和半径来实现。该方法是绘制圆形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆形。基本语法public void drawCircle (float cx, float cy, float radius, Paint paint)参数说明cx:圆心的x坐标。cy:圆心的y坐标。radius:圆的半径。pa...转载 2019-01-09 14:06:30 · 14424 阅读 · 1 评论 -
Drawable tint着色的后向兼容方案
文章目录解决方案优化使用 ColorStateList 着色BitmapDrawable 的优化EditText 光标着色原理分析看到 Android Weekly 最新一期有一篇文章:Tinting drawables,使用 ColorFilter 手动打造了一个TintBitmapDrawable,之前也看到有些文章使用这种方式来实现 Drawable 着色或者实现类似的功能。但是,这种方...原创 2019-01-20 10:44:42 · 1974 阅读 · 0 评论 -
一张图秒懂Android事件分发机制
先上干货:1.小白看过来(概念讲解)1.1 事件分发的对象是谁?答:点击事件(Touch事件)定义 当用户触摸屏幕时(View 或 ViewGroup派生的控件),将产生点击事件(Touch事件)Touch事件的相关细节(发生触摸的位置、时间等)被封装成MotionEvent对象事件类型(4种)事件类型 具体动作 MotionEvent.ACTION_D...原创 2019-02-17 00:04:24 · 249 阅读 · 0 评论 -
java动态代理中的invoke方法是如何被自动调用的
相关文章:静态代理和动态代理的区别和联系一、动态代理与静态代理的区别。(1)Proxy类的代码被固定下来,不会因为业务的逐渐庞大而庞大;(2)可以实现AOP编程,这是静态代理无法实现的;(3)解耦,如果用在web业务下,可以实现数据层和业务层的分离。(4)动态代理的优势就是实现无侵入式的代码扩展。静态代理这个模式本身有个大问题,如果类方法数量越来越多的时候,代理类的代码量是十分庞大的。...转载 2019-02-22 13:46:26 · 3307 阅读 · 0 评论 -
静态代理和动态代理的区别和联系
代理Proxy: Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 为了保持行为的一致性,代理类和委托类通常...原创 2019-02-22 13:42:52 · 1182 阅读 · 1 评论 -
Android之进程间通信(IPC)-Messenger
知识点:进程间通信的几种方式;Android中利用messenger信使进行通信;新名词记录{IPC机制;ContentProvider;Socket;AIDL;Messenger}概述众说周知,如果需要跨进程通讯,有几个方法来实现:IPC机制(Android利用Binder),Bundle/Intent传递数据,文件共享,Messenger,ContentProvider,Socket...原创 2019-02-16 22:36:08 · 204 阅读 · 0 评论 -
Android组件系列----Android Service组件深入解析
文章来源:http://www.cnblogs.com/smyhvae/p/4070518.html【前言】花了周末两天的时间,整理了一下作为Android四大组件之一的Service的基础知识,通过这篇文章,应该可以明白:对Service的理解、在什么地方使用、怎么使用、要注意哪些问题等。【本文主要内容】一、Service的基本概念(四大组件之一)二、定义(启动)一个Servic...转载 2019-02-16 18:31:10 · 175 阅读 · 0 评论 -
【转载】Android Service不能再详细的教程
转载:https://www.cnblogs.com/huolongluo/p/6340743.html这篇包含了:Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务 几乎所有Android Service相关的东西。 前言 作为四大组件之一的Service类,是面试和笔试的必备关卡,我把我所学到的东西总结了一遍,相信你...转载 2019-02-16 17:48:41 · 253 阅读 · 0 评论