
android
SoLucky2017
这个up主有点懒,懒上青天
展开
-
静态代码优化+ANR+提升程序优先级
崩溃捕捉CrashHandlerhttps://blog.youkuaiyun.com/wangzunkuan/article/details/78928346native层https://zhuanlan.zhihu.com/p/27834417ANR 提升进程优先级1 网络连接:心跳2 系统AlarmReceiver、BootReceiver3SyncAdapterContentProvider同步...原创 2021-03-09 19:54:13 · 131 阅读 · 0 评论 -
监控卡顿
1 Looper printer原创 2021-03-09 11:36:49 · 156 阅读 · 0 评论 -
Android优化:应用启动+布局+刷新View
1 启动耗时检测命令adb shell am start -W packageName/packageName.activity2 UI布局3 加载逻辑优化必要 耗时 优先加载:黑屏加载them4刷新优化1 控制刷新频率进度条更新颗粒度加大2 不必要刷新3避免后台影响4 缩小刷新invalidate与notifydataSetChanged5 动画优化1帧动画:能不用就不用2补间动画:...原创 2021-03-08 20:14:12 · 146 阅读 · 0 评论 -
android性能优化工具
1 测CPU:方法耗时 traceView使用 TraceView 查看耗时,主要关注 Calls+Recur Calls/Total 和 Cpu Time/Call 这两个值, 也就是关注调用次数多和耗时久的方法,然后优化这些方法的逻辑和调用次数,减少耗时2 UI卡顿情况 Systrace(1)Alerts Alerts 一栏标记了性能有问题的点,(2)Frame 每个应用都有一行专门显示 frame,每一帧就...原创 2021-03-08 17:49:45 · 379 阅读 · 0 评论 -
解决API26及以上的Android静态注册的Receiver收不到广播
public class CustomSenderActivity extends AppCompatActivity { public static final String BROADCAST_ACTION = "com.hncj.android.manifest.CustomSenderActivity"; public static final String BROADCAST_CONTENT = "broadcast_content"; @Override p.原创 2021-01-30 16:35:28 · 581 阅读 · 0 评论 -
listView优化
package com.example.adapter;public class Fruit { private String name; private int imageId; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getImage.原创 2021-01-25 14:40:10 · 140 阅读 · 0 评论 -
lauchMode
standard:总是新增 已有AB,B启动新增AsingleTop:顶部新启不新增;非顶部启动,会新增已有AB,B启动新增 AABA A上启动A A不新增singleTask : 栈顶新启不新增;非顶部启动,不新增,并且出栈其他。AB B上再启动A B干掉 A上来...原创 2021-01-22 10:30:19 · 98 阅读 · 0 评论 -
Activity间回传
A1Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivityForResult(intent, 1);@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, re.原创 2021-01-21 15:40:26 · 152 阅读 · 0 评论 -
Android studio模拟器连接网络问题
在android studio里面创建了android 11 模拟器发现不能连网(android 9以下可以联网),所以去了官网找原因https://developer.android.google.cn/studio/run/emulator-networking发现可以通过命令行的方式给模拟器手动指定要使用的 DNS 服务器地址,命令如下:emulator -avd Pixel_2_API_30 -dns-server 8.8.8.8在android studio 控制台输入即可,P.原创 2021-01-21 11:16:36 · 2887 阅读 · 2 评论 -
显/隐式intent启动Activity
Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent);原创 2021-01-20 18:48:07 · 252 阅读 · 0 评论 -
android menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/add_item" android:title="Add"/> <item android:id="@+id/remove_item" android:title=...原创 2021-01-20 17:52:27 · 105 阅读 · 0 评论 -
Android 打开就报错: Android studio中关于 No cached version of **** available for of
因为之前设置了 更新配置删掉:C:/Users/songlk/.gradle下的propertoes文件或者注释掉即可原创 2021-01-19 15:02:47 · 755 阅读 · 0 评论 -
unable to access android sdk add-on list解决方案
问题 原因 解决方案 1.配置Proxy 2.跳过检测 在Android Studio的安装目录下,找到\bin\idea.properties 在尾行添加disable.android.first.run=true,表示初次启动不检测SDK 跳过后设置Android Stuido 模式 下载SDK 总结问题更新Android Studio 4.2 版本,启动后报错如下原因AS启动之后,会检查默认路径下的Android SDK是否存在,如果没有的话,就会报上...原创 2021-01-15 14:00:21 · 902 阅读 · 0 评论 -
H264码流中SPS PPS详解
1 SPS和PPS从何处而来? 2 SPS和PPS中的每个参数起什么作用? 3 如何解析SDP中包含的H.264的SPS和PPS串?1 客户端抓包在做客户端视频解码时,一般都会使用Wireshark抓包工具对接收的H264码流进行分析,如下所示:在这里我们可以看到对解码视频起关键作用的SPS和PPS。双击SPS内容如下:双击PPS内容如下:那么从上面的sps中我们知道图像的宽,高。宽=(19+1 )*16=320高=(14+1)*16=240为什么?参考下面原创 2020-11-16 21:03:28 · 821 阅读 · 0 评论 -
直播问题分析总结 -- 花屏&绿屏
直播时有时会遇到花屏或绿屏的现象,都有那些原因会导致这种现象呢?我梳理了部分原因:视频直播花屏&绿屏 原因花屏花屏主要分为整个画面都花屏或局部花屏两种情况。全屏花屏正常花屏有一种花屏是正常的,就是码率特别低的时候出现的大面积马赛克,我们俗称"画面糊了"。比如我们告诉视频编码器要输出1280 720高清分辨率的画面,但同时要求它只用 200 kbps的码率*(码率是指编码器每秒产生的视频数据大小 ),编码器此时能做的事情就是无底线地降低画质,就会导致大面积的马赛克.原创 2020-11-16 21:02:45 · 6976 阅读 · 0 评论 -
android视频采集
视频画面的采集主要是使用各个平台提供的摄像头API来实现的, 在为摄像头设置了合适的参数之后,将摄像头实时采集的视频帧渲染到 屏幕上提供给用户预览,然后将该视频帧编码到一个视频文件中,其使 用的编码格式一般是H264。当然,最终我们还要配上音频,否则没有 音频文件的视频就成了早期的默片电影了。 本节将主要学习如何在Android和iOS平台上利用各自平台提供的摄 像头API,采集出正确的视频帧并绘制到屏幕上,具体的编码将会在后 续进行讨论。6.2.1 Android平台的视频原创 2020-11-16 16:31:39 · 1285 阅读 · 1 评论 -
android音频编码
libfdk_aac编码AAC 软件编码AAC,将基于FFmpeg的API来编写,而不像第2章那样直 接使用LAME库的API来编码MP3。这样做的好处是,只需要编写一份 音频编码的代码即可,对于不同的编码器,只需要调整相应的编码器ID 或者编码器Name,就可以编码出不同格式的音频文件。当然,既然要 使用第三方库libfdk_aac编码AAC文件,那么必须在做交叉编译的时候 将libfdk_aac库编译到FFmpeg中去。可编写一个C++的类,命名为 audio_encoder原创 2020-11-16 16:17:17 · 764 阅读 · 0 评论 -
推流上层ui示意图
-----------------------------------------------------------android手机通过camera类拍摄视频,把拍摄的视频通过h264编码,可以采用软编码(使用x264库或者opencore软件 库),java类通过jni调用编译后的so文件来实现。然后通过基于udp的rtp协议传输到服务器。为什么不使用tcp协议呢,因为tcp的重传机制 会产生延时和抖动,而单独使用udp传输协议本身是面向无连接的,不能提供质量保证,需要在...原创 2020-11-16 15:22:04 · 149 阅读 · 0 评论 -
Android保活实现方案梳理
参考资料:gitbub上的一个进程保活的库安卓进程保活解决方案Android进程保活招式大全双进程守护APP保活方案最近查看进程保活的各种资料,实现方式无非就那么几种,可以参考上面的资料链接,本篇博文对这些实现进行了分析和测试,并把从中体会到的知识点做个总结汇总,算是加深相关知识的理解。本篇博文以github的一个库为例,来逐步讲解说明该库总的来说就是整合了:一像素Activity,前台Servcie,Service设置START_STICKY,播放无声音乐Servcie,双进程守护Service,原创 2020-11-16 15:19:28 · 856 阅读 · 0 评论 -
android嵌入式
冯诺依曼原创 2020-01-06 08:55:44 · 598 阅读 · 0 评论 -
绘制球赛贝尔图
package com.example.test;import java.util.Random;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import an原创 2014-10-30 18:38:50 · 484 阅读 · 0 评论 -
Android 界面性能调优
界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。目录一. Android渲染知识1.1 绘制原理1.2 掉帧1.3 为什么是60Fps?1.4 垃圾回收1.5 UI 线程1.6 垂直同步1.7 UI 绘制机制与栅格化二. 检测和解决2.1 检测维度2.2 调试工具2.3 如何解决三. 界面过度绘制3.1 过度绘制概念3.2 追...原创 2018-03-07 09:52:07 · 340 阅读 · 0 评论 -
nigix部署静态资源读取资源数据失败405
混合开发:产品原型做一个地级市三级联动,h5方面是json静态数据问题:放在tomcat上面可以访问json数据放在nigix失败解决:ajax请求 post改成get给了一个json请求,在HTTP接口测试工具中post请求结果返回405状态,get请求则返回数据。搜了一番发现返回405是因为Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求。 试了网上的...原创 2018-02-26 17:00:26 · 521 阅读 · 0 评论 -
调用 WebView 的 loadUrl 加载页面后 Javascript 脚本不执行
调用 WebView 的 loadUrl 加载页面后 Javascript 脚本正常(location.href 指向的链接可跳转),点链接后在 WebViewClient 的 shouldOverrideUrlLoading 方法中对 URL 分析,并开启新 Activity 处理 URL 中包含的信息,关闭新 Activity 再返回 WebView 所在 Activity ,Javasc转载 2018-02-05 16:14:25 · 5494 阅读 · 0 评论 -
全面总结WebView遇到的坑及优化
:AWeiLoveAndroid链接:https://www.jianshu.com/p/2b2e5d417e10本文由作者授权发布。关于WebView,是开发过冲不可避免需要打交道的一个控件,可以先通过下面这篇文章做一些了解:必知必会 | WebView 的一切都在这儿WebView的基本使用以及Android和js的交互.(本文作者)https://www.jianshu.com/p/b916转载 2018-01-19 08:44:41 · 1825 阅读 · 0 评论 -
代码混淆
链接:https://www.jianshu.com/p/84114b7feb38本文由作者授权发布。一款发布到市场的软件原则上都应该做代码混淆,可能有人会说谁有功夫破解你的烂代码,这个嘛,开心就好......通过代码混淆可以将项目中的类、方法、变量等信息进行重命名,变成一些无意义的简短名字,同时也可以移除未被使用的类、方法、变量等。所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,转载 2018-01-19 08:43:10 · 231 阅读 · 0 评论 -
给初学者的RxJava2.0教程(九)
前言好久不见朋友们,最近一段时间在忙工作上的事情,没来得及写文章,这两天正好有点时间,赶紧写下了这篇教程,免得大家说我太监了。正题先来回顾一下上上节,我们讲Flowable的时候,说它采用了响应式拉的方式,我们还举了个叶问打小日本的例子,再来回顾一下吧,我们说把上游看成小日本, 把下游当作叶问, 当调用Subscription.request(1)时, 叶问就说我要打一个! 然后小日本就拿出转载 2018-01-07 11:05:17 · 209 阅读 · 0 评论 -
给初学者的RxJava2.0教程(八)
前言在上一节中, 我们学习了FLowable的一些基本知识, 同时也挖了许多坑, 这一节就让我们来填坑吧.正题在上一节中最后我们有个例子, 当上游一次性发送128个事件的时候是没有任何问题的, 一旦超过128就会抛出MissingBackpressureException异常, 提示你上游发太多事件了, 下游处理不过来, 那么怎么去解决呢?我们先来思考一下, 发送128个事件没有问题是因为转载 2018-01-07 11:04:13 · 185 阅读 · 0 评论 -
JVM
这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。JVM_Internal_Architecture上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。线程JVM 系统线程每个线程相关的程序计数器栈本地栈栈限制栈帧局部变量数组操作数栈动态链接线程共享堆内存管理非堆内存即时编译方法区类文...原创 2018-03-07 09:58:19 · 173 阅读 · 0 评论 -
大厂面试
作者:AWeiLoveAndroid链接:https://www.jianshu.com/p/c70989bd5f29本文由作者授权发布。本文只列出了问题,答案还是需要需要自己的总结,很多时候自己总结出来的语言在面试时比硬背的效果好很多。又到了面试求职高峰期,最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。这些题目是网友去百度、小米、乐视、美团、58、猎豹...转载 2018-03-07 11:03:57 · 383 阅读 · 0 评论 -
android studio编辑jni程序
在目前的Android开发中,一般情况下有2种方法来使用JNI编程,就是传统的需要手动生成h文件和新版的CMake,Cmake的是利用配置文件来完成一些配置,实际上只是简化了流程,用CMakeLists.txt文件来进行一些类库的配置而已,这里以Cmake为例子,下面是步骤:● 首先新建一个项目,并且勾选上C++的支持,如图:然后默认就好,最后来到C++有关的选项,可以2个都勾上。● 第一个步骤完...原创 2018-02-23 13:58:31 · 598 阅读 · 0 评论 -
Could not find com.android.tools.build:gradle:3.0.0.
解决方法:在project的builde.gradle做如下操作分别加上google()buildscript {repositories { google() ....}dependencies { classpath 'com.android.tools.build:gradle:3.0.0' // NOTE: Do not place your a...原创 2018-03-02 15:19:02 · 944 阅读 · 0 评论 -
可视摄像头角度
ButelConnEvtAdapter.getService().setLocalRotate(90);// 53 控制对端看自己的角度90原创 2018-04-09 16:10:58 · 1092 阅读 · 0 评论 -
Android使用AudioRecord遇到的问题与解决方法
问题:1、android判断是否禁用了录音权限 通过判断分贝值是否大于0,在代码中搜索 volume > 02、部分手机在调用 audioRecord.startRecording(); 和audioRecord.stop();方法时会抛出异常,例如联想手机3、部分手机(例如联想)会抛出java.lang.IllegalStateException: star...原创 2018-08-21 10:37:06 · 5566 阅读 · 0 评论 -
百度App网络深度优化系列《一》DNS优化
一、前言网络优化是客户端几大技术方向中公认的一个深度领域,所以百度App给大家带来网络深度优化系列文章,其中包含系列《一》DNS优化,系列《二》连接优化,系列《三》弱网优化,希望对大家在网络方向的学习和实践有所帮助。百度起家于搜索,整个公司的网络架构和部署都是基于标准的internet协议,目前已经是全栈HTTPS,来到移动互联网时代后,总的基础架构不变,但在客户端上需要做很多优化工作。...转载 2019-02-18 09:09:33 · 782 阅读 · 0 评论 -
解决gradle下载慢的问题
开发工具: IntelliJ IDEA & Android Studio问题:新建项目下载gradle慢的问题解决:打开用户主目录linux平台/home/用户名/.gradlewindows平台c:\Users\用户名\.gradlemacos平台/Users/用户名/.gradle找到./gradle/wrapper/dist/gradle-版本号-bin目...转载 2019-05-10 09:57:48 · 975 阅读 · 0 评论 -
给初学者的RxJava2.0教程(七)
前言上一节里我们学习了只使用Observable如何去解决上下游流速不均衡的问题, 之所以学习这个是因为Observable还是有很多它使用的场景, 有些朋友自从听说了Flowable之后就觉得Flowable能解决任何问题, 甚至有抛弃Observable这种想法, 这是万万不可的, 它们都有各自的优势和不足.在这一节里我们先来学习如何使用Flowable, 它东西比较多, 也比较繁琐,转载 2018-01-07 11:01:40 · 169 阅读 · 0 评论 -
给初学者的RxJava2.0教程(六)
前言在上一节中, 我们找到了上下游流速不均衡的源头 , 在这一节里我们将学习如何去治理它 . 可能很多看过其他人写的文章的朋友都会觉得只有Flowable才能解决 , 所以大家对这个Flowable都抱有很大的期许 , 其实呐 , 你们毕竟图样图森破 , 今天我们先抛开Flowable, 仅仅依靠我们自己的双手和智慧 , 来看看我们如何去治理 , 通过本节的学习之后我们再来看Flowab转载 2018-01-07 11:00:56 · 249 阅读 · 0 评论 -
给初学者的RxJava2.0教程(五)
前言大家喜闻乐见的Backpressure来啦.这一节中我们将来学习Backpressure. 我看好多吃瓜群众早已坐不住了, 别急, 我们先来回顾一下上一节讲的Zip.正题上一节中我们说到Zip可以将多个上游发送的事件组合起来发送给下游, 那大家有没有想过一个问题, 如果其中一个水管A发送事件特别快, 而另一个水管B 发送事件特别慢, 那就可能出现这种情况, 发得快的水管A 已经发送转载 2018-01-07 10:59:31 · 152 阅读 · 0 评论 -
Android中Bitmap和Drawable
一、相关概念1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象2、Canvas画布,绘图的目的区域,用于绘图3、Bitmap位图,用于图的处理4、Matrix矩阵二、Bitmap1、从资源中获转载 2014-10-31 17:53:10 · 379 阅读 · 0 评论