- 博客(14)
- 资源 (15)
- 收藏
- 关注
原创 Android之Application的onTerminate能监听应用退出吗?
Android之Application的onTerminate能监听应用退出吗?一些Android开发者在不经意间发现Android的Application中有一个公开的回调方法:onTerminate()继而想当然的认为该方法即是Android的整个App应用退出后的回调,因为Terminate的词面意思就是...
2018-07-27 10:07:21 30027 4
原创 Android系统兼容性适配:5.0以上系统去掉Button按钮阴影
Android系统兼容性适配:5.0以上系统去掉Button按钮阴影 解决方案很简单,在xml布局里面定义Button时候,增加style属性配置:style="@style/Widget.AppCompat.Button.Borderless" ...
2018-07-25 15:19:46 458
原创 Android性能监测:Looper机制监测卡顿和丢帧(二)
Android性能监测:Looper机制监测卡顿和丢帧(二)附录1使用Android的Choreographer监测App发生的UI卡顿丢帧问题。Choreographer本身依赖于Android主线程的Looper消息机制。发生在Android主线程的每16ms重绘操作依赖于Main Looper中消息的发送和获取。如果App一切运行正常,无卡顿无丢帧现象发生,那么开发者的代码在主线程L...
2018-07-24 10:13:46 4765
原创 Android命令行签名打包apk
Android命令行签名打包apk Android studio自带图形化打出签名包的工具,但是有些时候,需要在命令行下手动输入签名命令行,根据密钥打出签名包。比如加固平台加固后的App会把签名去掉,此时加固后的包需要再次进行签名。如打出签名包的命令行:jarsigner -verbose -keystore D:\code\complie\AppKey.jks -signedjar...
2018-07-23 10:52:57 2789
原创 Android性能:通过Choreographer检测UI丢帧和卡顿
Android性能:通过Choreographer检测UI丢帧和卡顿Android系统每隔16ms重绘UI界面,16ms是因为Android系统规定UI绘图的刷新频率60FPS。Android系统每隔16ms,发送一个系统级别信号VSYNC唤起重绘操作。1秒内绘制UI界面60次。每16ms为一个UI界面绘制周期。...
2018-07-20 11:27:38 5978
原创 git定位追踪一行或若干行代码修改历史记录
git定位追踪一行或若干行代码修改历史记录先使用git blame追踪溯源这些行代码修改的历史记录,比如:git blame -L 201,208 YanBaoFragment.java这样会把YanBaoFragment.java代码文件的第201行到208行代码的改动记...
2018-07-16 16:28:35 18675
原创 CompletableFuture的runAsync
CompletableFuture的runAsyncCompletableFuture的runAsync只是简单的异步执行一个线程,但是它将返回一个CompletableFuture,有了这个CompletableFuture,可以重新组装和调配,这是和一个普通Runnable不同之处。CompletableFuture future = CompletableFuture.runAsync(ne...
2018-07-13 17:39:00 20558 3
原创 CompletableFuture的exceptionally
CompletableFuture的exceptionally代码:private void test() { System.out.println("开始..."); CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get()...
2018-07-12 10:08:08 13060
原创 CompletableFuture的thenCombineAsync
CompletableFuture的thenCombineAsync代码:private void test() { System.out.println("开始..."); CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String ge...
2018-07-10 16:14:42 4046
原创 git不分页一次性输出某一开发者过去若干天的代码改动记录
git不分页一次性输出某一开发者过去若干天的代码改动记录git命令:git --no-pager log --word-diff --author="zhangphil" --since=8.days输出开发者“zhangphil”过去8天的代码改动记录,不分页一次性输出全部改动。...
2018-07-09 09:43:23 1016
原创 Android签名包apk安装不上:INSTALL_PARSE_FAILED_NO_CERTIFICATES
Android apk安装不上:INSTALL_PARSE_FAILED_NO_CERTIFICATESAndroid studio正式打包生成签名的apk,在一些低版本Android系统的手机上安装不上,输出错误提示:INSTALL_PARSE_FAILED_NO_CERTIFICATES解决方案,在Android studio打包过程中,生成签名包时候,Signature versions的V...
2018-07-03 14:24:51 5455
原创 CompletableFuture的applyToEitherAsync:最快返回输出的线程结果作为下一次任务的输入
CompletableFuture的applyToEitherAsync:最快返回输出的线程结果作为下一次任务的输入applyToEitherAsync和附录1的acceptEitherAsync类似,只是说acceptEitherAsync是对结果的消费,而applyToEitherAsync则是把最快返回的计算输出结果,再利用起来作为下一次线程任务的输入。private void test()...
2018-07-02 15:23:48 3392
原创 CompletableFuture的acceptEitherAsync:哪个线程跑的最快用那个
CompletableFuture的acceptEitherAsync:哪个线程跑的最快用那个acceptEitherAsync:假设两个线程A和B,不确定A和B哪个最快执行完毕返回, 但是需要使用最快执行完毕的线程返回的结果。那么就可以使用代码:private void test() { System.out.println("开始..."); CompletableFutur...
2018-07-02 14:37:16 2042 1
原创 CompletableFuture的runAfterBothAsync
CompletableFuture的runAfterBothAsyncrunAfterBothAsync:假设有两个线程A和B,这两个线程都是异步执行的,但是不确定A和B何时执行完毕,但是需要在A和B都执行完毕后运行线程C。package zhangphil.test;import android.os.Bundle;import android.support.annotation.Nul...
2018-07-02 14:12:19 2036 1
链家2020年9月二手房数据
2020-12-10
strava_com_sample_utf8.xls
2020-12-10
digital-7字体(LED数字样式字体)
2017-09-05
MaterialDesignLibrary_Code and Lib合集
2015-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人