- 博客(21)
- 资源 (4)
- 收藏
- 关注
转载 Pycharm 永久破解
按照教程破解,注意不要使用最新的pycharm版本,要使用先前的版本我使用的版本:2018.1 下载链接:https://www.jetbrains.com/pycharm/download/previous.html破解jar包选择2.8即可。按照下面文章的教程设置完启动pycharm,就是破解版的了https://blog.youkuaiyun.com/ziwuzhulin/article/de...
2019-04-11 10:03:46
779
原创 动态代理Proxy原理讲解
最近在阅读Retrofit的源码,首先看到了Retrofit的创建方法:public <T> T create(final Class<T> service) { Utils.validateServiceInterface(service); if (validateEagerly) { eagerlyValidateMethods(serv...
2019-03-07 20:44:02
2252
原创 Android实现一套线程依赖、线程同步的方案
背景最近发现项目中启动优化的代码是直接创建一个线程,然后将一些耗时代码放到该线程中去执行。涉及到启动之后的一些流程分发的耗时任务也是直接创建一个线程去做。new Thread(new Runnable() { @Override public void run() { //do something }}).start();开启一个线程本身也需要一些...
2019-03-04 15:43:18
747
原创 Window相关的各个类的作用域
今天项目里遇到一个error的日志:E/WindowManager: android.view.WindowLeaked: Activity com.yingzi.main.ui.login.LoginActivity has leaked window DecorView@bd1de37[LoginActivity] that was originally added here ...
2019-02-25 19:35:52
440
原创 RecyclerView缓存机制分析--GridlayoutManager中的坑
前言主要是接上一篇文章,想跟进下RecyclerView的源码,视图从源码层面找到解决RecyclerView+GridLayoutManager组合导致的滑动卡顿问题。RecycleView在滑动的过程中,需要不断的创建、绑定item、绘制item,这里就不得不了解下recycleView的缓存机制。缓存机制其实关于recycleView的缓存机制,网上有很多相关文章:下面推荐几篇我自己...
2019-02-15 18:50:09
3220
原创 卡顿分析:掉帧
前言:Android中标准帧率是60FPS,每秒刷新60帧画面,那么每帧就要在大约16ms渲染完成,如果超过了16ms,就会仍然显示上一帧画面。对于用户来说就是界面被卡住了。尤其是在连续的滑动过程中,突然掉帧,对用户来说卡顿非常明显,体验很不好。反而如果刷新一直保持在一个稳定的帧率,对用户体验来说反而影响不大,比如王者荣耀的最高帧率也就30FPS,但是由于我们的眼睛对于24fps就已经感觉到流畅...
2019-02-15 11:02:32
1845
1
原创 Android性能优化系列:内存泄漏分析
由于Android系统中每个APP所占用的内存分为两部分:java内存和native内存。java申请的内存是在vm的堆内存中,如果超过vm设置的内存限制,则会爆出out of memery的异常。native申请的内存则没有限制,native层受native进程对内存大小的限制。对于java层内存的跟踪、泄漏检测目前有leakcanary的第三方库比较好用,可以在开发阶段对内存泄漏做很好的检...
2019-01-24 12:49:38
364
1
原创 如何自己写一个Butterknife?AnnotationProcessor开发实例
上一篇讲述了ButterKnife是通过AnnotationProcessor来讲代码中的注解@BindView转换成MainActivity_ViewBinding.java文件的。那AnnotationProcessor是怎么编写、运行的呢。这篇将进行讲解。一、简介AnnotationProcessor是一个在编译期用来扫描代码和处理注解的工具。它可以用来处理我们自己声明的([注解](ht...
2019-01-18 18:17:35
251
原创 如何自己写一个Butterknife?Butterknifes原理探究
背景:之前使用过butterknife,后来又有了比较热门的Aroute用于项目解耦。两者在代码编译期的实现原理都是差不多的:即使用注解BindView或者Route,如下图:public class MainActivity extends AppCompatActivity { @BindView(R.id.testId) TextView mTestId; @Ov...
2019-01-17 16:27:52
289
原创 Android ViewOverlay和ViewGroupOverlay的使用总结
背景:需要开发一个如下图所示的"底部有新消息"的提示语。想了几种方案选择,用view直接添加(要改动布局,不想改)、用dialog、popwindow等展示。但是觉得这些对于这个来说有些重,所以考虑有没有其他简单的方案,直接添加一张图片或者直接添加一个view上去,找了下,发现还真有。这就是要说的ViewOverlay.ViewOverlay是在Android 4.3的时候添加的,...
2019-01-15 18:19:09
3335
转载 Android动画原理分析(转载、收藏)
http://blog.youkuaiyun.com/NicolasYan/article/details/50779337 动画原理分析,理解了跳帧的原理, 同时也了解Android是如何控制动画的执行间隔: FrameHandler的sendMessageAtTime(Message msg, long uptimeMillis)方法来不断发送消息对应于文中 上面蓝色框内的内容即使。 其中dueT
2016-03-05 17:15:12
331
原创 Android Studio的使用技巧 PS:源码解读
问题描述根据java中的命名习惯,我们经常会在成员变量名称的前面加个m,比如mBody,mContext,mText等等。有时我们需要写一个get、set方法。那么根据Android studio提供的版本很容易写出如下代码 会出现如下代码:package wzk.com.slidecloseactivity;/** * @author WangZhengkui on 2016-02-24
2016-02-24 19:54:11
945
2
原创 仿微信、知乎实现上下左右滑动关闭Acticity
用过IOS的手机都知道,IOS是可以右滑可以返回前一个界面的。在Android机上目前使用的还不多,到现在为止,我看到的只有微信、知乎实现了这个功能。目录[TOC] - 效果展示 - 逻辑剖析 - 代码注释 - 代码库效果展示 特色: 1、支持上下左右边界或者全屏幕的滑动 2、实现了前一个Activity的界面滑动逻辑剖析实现这个效果,我们需要处理两部分
2016-02-23 19:12:43
2149
原创 apk热补丁动态修复的制作、调用、实现1
apk+热补丁参考文献:http://zhuanlan.zhihu.com/magilu/20308548https://github.com/dodola/HotFixhttp://blog.youkuaiyun.com/zylc369/article/details/44618229系统环境硬件环境:macOSIDE :Android studio前言什么是热补丁? 当一个APP发布以后,
2015-12-05 19:05:59
1131
原创 js自定义radio
思想:因为每一个radio标签后面都会有一个label标签,这里就是借助radio的状态(eg:未选中状态,选中状态,获取焦点时状态等)改变label背景来实现效果,并将radio隐藏。
2015-04-08 16:14:13
725
原创 Android 系统对话框
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);加上这句,使我们的对话框成为系统对话框。我们还需要这个权限才能弹出系统对话框。这样即使应用退出了,那么在指定事件发生时,我们仍然可以提示用户。
2013-12-25 18:15:43
377
原创 Android应用的定时更新
Android应用的定时更新,本人使用的是Service+Broadcast+AlarmManager.具体如下:Service/**用于定时的任务*/ PendingIntent pendingIntent; public static final String DOWN_ACTION_NAME = "com.mypay.down"; /** 小时,用于定时*/ pu
2013-12-25 17:43:07
795
原创 获得当前可见的Activity
可以通过ActivityManager来获取当前运行的可见的Activity。具体方法:ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);ComponentName name = am.getRunningTasks(3).get(0).topActivity;if(Mai
2013-12-10 11:37:21
787
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人