自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Activity四种启动模式

1.Standrd模式(标准启动模式)标准启动模式就是没有特殊配置的Activity。该启动模式下会一直创建Activity并将该Activity压入TaskRecord中。2.SingleTop(栈顶复用模式)解释:只有当Activity位于栈(TaskRecord)顶的时候,再次启动当前的Activity,复用栈顶的Activity实例。不会重复创建。如果位于栈(TaskRecor...

2019-08-16 16:20:51 140

原创 Android加密

Android数据加密 为什么要进行数据加密? 在一个Android应用中,客户端与服务器之间数据通信安全是非常重要的。这就涉及到了数据的加密。Android中客户端与服务器端数据的加密主要有两种情况: 1.只有创建者才能够知道的数据 比如用户密码数据,这类数据加密后必须是不可逆的,也就是说数据加密后传到服务器,服务器端无需解密,也不能解密,直接存进数据库。2.也是比较重要的数据...

2018-06-27 19:42:02 203

原创 string stringbuffer stringbuilder三者之间的区别

String和Stringbuffer就是常量与变量的关系,String是常量,不可变,Stringbuffer是变量,可以修改内容它们两个内部实现的方式也不同,StringBuffer在进行字符串处理的时候,不会生成新的对象,而String在进行字符串处理时,会生成新的对象。Stringbuffer是线程安全的,在多线程程序中也可以使用,但是执行效率比较缓慢。而String是不可变的,所以对于一...

2018-06-27 14:52:09 261

原创 视频录制与视频压缩

 1.录制两种方法(1)通过intent影视跳转,打开相机进行录制,播放使用videoview但是videoview它不自带监听,需要从写一个类来继承videoview,重写暂停,播放方法。通过接口回调来监听它是暂停还是播放。(2)通过MediaRecorder来进行视频录制,用SurfaceView来进行绘制,绘制的时候会开启一个线程,不会与主线程进行堵塞。2.视频压缩(1)通过ffmpeg多媒...

2018-06-26 22:59:46 406

原创 线上进行热修复

热修复原理:就是线上实时修复bug,降低了成本,用户体验也好,不用像原来修复bug(哪怕就是一行代码)还得重新打包再发送新版本到应用市场,再让用户下载,那样成本高不说,用户体验还特别不好;热修复主要是通过android的类加载机制来实现(上图就是整体加载项目apk下class文件的一个过程)实现简单热修复得步骤:1.通过PathClassLoader 来加载我们自身App的dex,因为我们要修改自...

2018-06-25 22:45:30 549

原创 Android与JS交互

Android与JS交互就是Android和JavaScript之间相互调用来实现页面的展示,他们之间的桥梁就是Webview对于Android调用JS代码的方法有2种:1. 通过WebView的loadUrl()2. 通过WebView的evaluateJavascript()这两种方式的区别:通过loadurl()来调用使用方便,但是他是在没有返回的情况下使用,效率比较低,获取返回值比较麻烦并...

2018-06-25 21:39:01 305

原创 微信支付流程

用户tongguoApp下单,然后App发起一个网络请求给我们的App后台,后台返回一个签名的信息给App

2018-06-24 19:40:28 220

原创 OCR身份证识别功能

我们来理解下这个类函数的运作机制,借此联想下Tesseract引擎的实现原理。机制如下:1. 调用Init()方法,即对引擎初始化2. 调用setImage()方法,设置图形流的信息3. 通过getUTF8Text()方法获得text信息4. 调用recognizedText类,判断text的正确性,然后输出。这里,会调用自有的trim()方法和length()方法做一些相应的处理。后台会自动识别...

2018-06-21 15:46:25 485

原创 环信即时通讯

环信是目前比较主流的一个通讯服务平台。1.首先我们需要下载环信的SDK包,然后在里面找见一个包含jar包的一个文件夹,我们可以看到那个文件夹下含有三个子目录,里面放的都是so文件,然后我们将jar包放在我们项目中的libs目录下(编译一下加入到项目中),然后在main目录下新建一盒jniLibs文件夹,然后将三个字目录复制到这个目录下。2.在环信上面创建一个新的应用程序,目的就是获取AppKey,...

2018-06-21 08:37:08 2132

原创 直播的基本流程(一)

直播它主要分为三个端一个互动系统推流端:采集:从外界获取他的声音和图像前处理:就是对声音和图像做一些处理,比如说美颜等。编码:通过编码器去编码,编码完成之后通过固定的协议去推流,比如说RTMP推流:推流到服务端服务端:转码:转码就可以给各个平台进行通用。录制和截图:有些服务端可能还需要录制这些推过来的流,同时还要进行截图,录制主要是为了保存,便于以后的回放。截图主要是用于用来做直播的封面。鉴黄:现...

2018-06-20 16:31:23 6542

原创 EvenBus

EventBus能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。主要功能 替代Intent,Handler,BroadCasa在线程之间的信息传递。EventBus 三要素1  Event 事件,可以是任意类型的对象2  Subscriber 事件订阅者OnEvent OnEventMAINThrea...

2018-06-14 09:09:06 269

原创 屏幕适配

屏幕适配:为了使我们的用户在体验我们的产品时拥有一致的体验效果,我们需要对它进行屏幕适配。屏幕适配主要从两方面进行适配,第一就是要适配屏幕尺寸,第二就是要适配屏幕密度。适配屏幕尺寸又要从一下几个方面来进行适配:布局适配(布局以及限定符的使用)布局组件适配(尽量使用wrap_content、match_partent)图片资源适配 (尽可能的使用.9图片)用户界面流程适配屏幕密度从两个方面进行时培:...

2018-06-13 16:51:30 186

原创 AsyncTask

Android提供了一个AsyncTask类专门用于处理异步问题,AsyncTask他是一个轻量级的抽象工具类,这个类是对Thread类的一个封装并加入了一些方法,并且他定义了三种泛型类型的参数,分别是Params  :   启动任务时输入的参数,比如说 网络请求的urlProgress:   后台执行任务的百分比Result:       后台执行任务最终返回的结果AsyncTask类主要用的的...

2018-06-13 15:42:10 173

原创 性能优化

因为手机CPU和内存受到限制,过多使用内存会可能会导致内存溢出、过度使用CPU可能会导致手机卡顿,从而出现了我们的性能优化。主要从俩个方面进行优化  1.布局优化2.内存优化布局优化:能复用的就复用。布局较简单的则使用LinearLayout(性能耗费低)。从而避免不需要给Id的控件也给Id占用空间。布局复杂的则使用RelativeLayout(耗费性能高)。虽然他会在R文件生成很多无用的Id但是...

2018-06-13 15:29:35 213

原创 handler机制

当我们运行一个App程序时,首先会启动一个主线程,如果我们需要进行网络请求或者加载比较大的文件时,我们就不能将这个任务放在主线程中,因为主线程加载时间一旦超过五秒时,这时它会给我们报一个ANR(程序无响应)可是UI界面的更新只能在主线程中,...

2018-06-13 15:26:13 204

原创 线程池

线程池是指在初始化一个多线程应用程序过程中创建的一个线程集合线程的分类:(1)FixedThreadPool :                 线程数量固定,只有核心线程且不会被回收,当所有线程都处于活动状态时,新任务都会处于等待状态        知道有线程空闲出来。(2)CacheTheardPool:                线程数量不定,只有非核心线程,有超时制,时长为60s,超过...

2018-06-12 22:56:36 179

原创 App瘦身

App瘦身就是在不减少App功能的前提下,通过一些技巧来减少APK包的体积,从而提升用户的下载体验,App瘦身的方法有很多,其一,去除无用资源,这个就是说要根据产品的市场来考虑删除App不需要的语言,第二,代码混淆,代码混淆的主要目的是增加反编译解读源码的难度,提高应用安全性。但是它同时的确带来了代码量的减少,虽然减少的可能不是特别显著,第三种就是插件化,插件化作为现在一种项目流行趋势,极大地减少...

2018-06-12 19:51:43 370

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除