8 垚石

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 6w+

log日志中输出log所在类,方法和行数

android开发中,log日志如果能同时显示发生log所在的类,方法名和行数,更方便我们定位。获取的方法如下: /** * 得到tag(所在类.方法(L:行)) * @return */ private static String generateTag() { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[0]; St

2020-08-11 09:49:07

canvas的理解

一直在用canvas,但是canvas到底是什么,不是很清楚。今天就研究一下,弄懂它。google中关于canvas的解释是:To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap),a drawing primitive (e.g. Rect, Path, text, Bitmap

2020-08-10 11:59:24

关于手机的各种mac地址

android开发经常用到mac地址1、wifi路由器的mac 地址:WifiInfo这个对象可以通过WifiManager.getConnectionInfo()来获取。WifiInfo中包含了当前连接中的相关信息。getBSSID() 获取BSSID属性 也就是路由器的mac2、手机连接wifi时候,手机的mac地址:手机里的MAC其实是特指Wi-Fi无线网卡的MAC地址。3、手机的mac地址,一般就是指上面2中的无线网卡的mac地址。4、蓝牙地址备注:(小米手机).

2020-08-06 15:04:49

ActivityLifecycleCallbacks的使用

刚看了一篇大神的文章,用ActivityLifecycleCallbacks替换BaseActivity,来实现公共的需求。给我打开一个新思路。先附上大神的地址:https://www.jianshu.com/p/75a5c24174b2ActivityLifecycleCallbacks替换BaseActivity,主要能解决的问题是:有很多我们自己的activity需要集成除了Baseactivity外的其他的activity,但是java是单继承的。使用ActivityLifecycl

2020-08-05 16:30:40

android屏幕的刷新机制

ui的布局,测量,绘制,需要在16毫秒之内,人的眼睛就会觉得流畅。1、如何选择布局?能用FrameLayout就用FrameLayout,因为FrameLayout是最简单高效的。其次,有限选择Relativelayout,因为他可以实现一些在LinearLayout必须嵌套才能实现的布局,而Relativelayout不用嵌套,就能实现。2、重复绘制overdraw同一帧,某一个像素点,被绘制了多次。比如:viewpager和fragment都设置了背景色,这样就导致,同一个像素点

2020-07-30 20:20:47

IDEA自动清理优化import包

直接上图:Add unambiguous imports on the fly:快速添加明确的导入。Optimize imports on the fly:快速优化导入,优化的意思即自动帮助删除无用的导入。

2020-07-24 09:35:57

android关于nfc的理论

区分IC卡和ID卡:https://www.jianshu.com/p/5051e50c308bAndroid NFC开发详细介绍一(理论篇):https://www.jianshu.com/p/873a0927e68dhttps://blog.csdn.net/csdn_gyg/article/details/72884849Android NFC 读取 卡片ID:https://blog.csdn.net/qq_29578485/article/details/791952...

2020-07-23 11:02:50

模拟器adbd cannot run as root in production builds

我在使用as自带的模拟器的时候,想用adb root命令,结果提示:adbd cannot run as root in production builds百度了一下,原来是模拟器的问题。google APIs:支持adb rootgoogle Play:不支持adb root

2020-07-22 18:00:12

apk反编译

1、把APK考到apktool目录下,比如我的是MENU测试.APK 在cmd中敲下命令:apktool d MENU测试.APK menu,得到menu文件2、经过上一步之后menu中会有.smali文件,再使用命令:java -jar smali.jar menu/ -o classes.dex就会得到一个classes.dex文件3、把这个文件考到dex2jar目录下,执行命令:dex2jar.bat classes.dex,便会得到classes_dex2jar.jar文件4、classes_

2020-07-21 18:51:39

android5.0后的动画

android5.0以后,系统添加了很多动画,给我们使用,今天记录几个activity的跳转时候的动画。系统的的 androidx.core.app.ActivityOptionsCompat 类的5个静态方法:

2020-07-15 16:07:28

ThreadPoolExecutor4个构造方法

ThreadPoolExecutor是在android中使用线程池时候,用到的类。为什么要使用线程池?1、线程的创建和销毁,需要占用内存资源,对性能影响很大。2、线程创建的数量太多时候,反而执行速度会下降。比如4核cpu的手机,最好开4*2+1=9个线程,是执行速度最快的。线程池的4个构造方式,其中3个构造参数少的方法,最终都调用都是构造参数最多的那个。通常情况下,我们使用jdk已经给我们预制的4个创建线程池的方法。Executors.newFixedThreadPool..

2020-07-13 17:40:58

android事件分发

Android的touch事件分发的方向是从父控件到子控件,而事件消费方向则是从子控件到父控件。

2020-07-08 17:28:31

Handler中有Loop死循环,为什么没有因为死循环卡死?

今天一个同事去面试,遇到这个问题。我也不是很明白,去百度一圈,明白个6成,先记录下来。这个问题有2个点:死循环 和 卡死。1、死循环:为什么要在Looper中创建死循环代码?2、卡死是怎么产生的?1、死循环:android在启动app时候,创建主线程ActivityThread,主线程中执行死循环代码,作用有2个:a、保证线程不会死,主线程如果执行结束了,那app就退出了,所以主线程不能死,就依赖这个死循环代码。b、持续对Message进行接收、处理、发送,保证handl

2020-07-02 10:30:39

android8.0的通知

android系统升级到8.0了以后,需要适配notification,如果不适配,发出的notify显示不出来。8.0的notification,新添加了通知渠道。通知渠道是什么?为什么需要渠道?怎么用?1、通知渠道,实际是google对应用的通知的分类。每一个通知,都必须关联一个渠道。之前的版本中,通知是没有分类的,一个app的通知,在设置中,打开和关闭通知,是对所有的通知生效。8.0版本后,用户可以选择关闭app指定的渠道的通知,比如渠道分为 1聊天 2美食推送,我们关

2020-06-30 18:45:24

ARouter::There is no route match the path

出现这个错误提示的原因有几种可能:1、路径不对比如:@Route(path="/home/homeActivity")中缺少“/”,缺少group2、不同moudle 中的group不能相同。3、要将业务moudle依赖到主app中。

2020-06-30 09:22:57

android关于蓝牙BLE的开发

android蓝牙BLE的开发:1、最新的api是使用 bluetoothLeScanner.startScan废弃了 adapter.startLeScan2、顺序import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothGatt;import android.bluetooth.BluetoothG...

2020-06-28 15:48:40

runtime是什么

在计算机系统中,每一种编程语言,都有一个运行环境。

2020-06-25 19:56:04

handler引起的内存泄露

内存泄露:生命周期短的对象,引用了生命周期长的对象。产生原因:例子:public class TestActivity extends Activity{ public Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg);

2020-06-21 23:15:38

apk打包流程

1、aapt处理资源文件2、将aidl文件编译问java文件3、将所有的java文件编译为class文件4、将所有的class文件转换打包成dex文件。5、将dex文件,资源文件,lib,androidmanifest文件,打包成apk6、对apk进行签名...

2020-06-21 21:56:19

Service和thread的不同使用场景

1、我们会混淆这2个类是因为,都可以执行耗时操作。但是耗时操作,分很多中类型。比如:网络请求,是与activity相关的,用thread,响应得到的数据,更新ui比如:下载,与activity无关,activity关闭了,也要继续下载,用service(创建子线程)。2、生命周期Thread的生命周期:在activity中start,activity销毁,thread也就无法被操作了,就结束了。service的生命周期:oncreate,onstart,(onbind,unbind、

2020-06-19 00:07:13

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。