自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android Messenger的使用(配源码)

Android Messenger 使用方法 跨进程通信 IPC Handler

2023-06-06 14:24:10 749

原创 Android AIDL的使用(配源码)

Android 跨进程 通信 IPC AIDL使用 Demo 手把手

2023-06-06 12:07:48 860

原创 Android系统启动流程概览

Android系统启动流程。FWK启动流程。系统启动流程。每个子进程退出时 —— 发出 SIGCHID 信号 —— Zygote 会杀掉自己 —— 系统给所有子进程发送 SIGHUP 信号 —— 各子进程杀掉自己退出当前进程(子进程中的 Daemon 进程设置 SIG_IGN参数忽略 SIGHUP 信号继续运行)。fork() 出的子进程,是父进程的一个copy,继承了整个进程的地址空间:包括进程上下文、进程堆栈、打开的文件描述符、信号控制设定、进程优先级、进程组号等

2023-05-27 16:32:06 3573

原创 人生有何意义?

今天问了chatgpt一个问题,下面是它的回答:Question人生有何意义?Answers人生的意义在于:追求幸福和快乐。人生的意义在于:追求幸福和快乐。人生的意义在于:追求幸福和快乐。人生的意义在于:追求幸福和快乐。人生的意义在于:实现个人价值和成就。人生的意义在于:为他人做出贡献和服务。人生的意义在于:寻找自我意义和存在意义。人生的意义在于:体验和探索世界的奇妙之处。人生的意义在于:享受和珍惜人际关系和人类共同体验。人生的意义在于:追求真理和智慧,探索人类的本质和宇宙的奥秘

2023-03-17 18:40:14 674 2

原创 git reset --soft 版本回退多了,怎么恢复?

git reset --soft 使用回退多了,说白了,就是本地 Head 指向的版本不对了,指向了一个历史版本,那么把指针指向最新的版本就好了。但问题是,此时执行 git log 只能查看到,历史到你回退到的这一版本,真正最新的版本 通过 git log已经看不到了,怎么办?使用命令:......

2022-07-01 20:33:22 5360 2

原创 git push gerrit 常用命令

需要Review(走Gerrit)git push origin HEAD:refs/for/dev-d711不需要Review(直接推)git push origin HEAD:refs/heads/branchgit reset --hard commitId 完全恢复到某个提交版本git push origin master:refs/for/masterorigin 远程仓库名称master 分支名称refs/for/master 远程分支名称

2022-04-28 18:17:08 3807

原创 Alone Brave

We humans are alone in this world for a reason, for brave to be yourself.

2022-04-06 08:52:02 260

原创 Android singleLine弃用,怎么正确处理?

一、首先看一下singleLine的解释与用法android:singleLineFormats: booleanConstrains the text to a single horizontally scrolling line instead of letting it wrap onto multiple lines, and advances focus instead of inserting a newline when you press the enter key. The defa

2022-03-30 11:13:21 2760

原创 使用 pyinstaller 将python脚本 生成 exe可执行文件

pyinstaller 命令有的同学,执行后,报找不到依赖的包的错误。请参考上面的命令,使用-p 将python自己的 Lib/site-packages 和 pycharm中 venv/Lib/site-packages 都加进去,应该就ok了。

2021-12-15 18:24:44 677

原创 吐槽Linux Bash Shell的语法

赋值 与 运算符的空格a=10 赋值时,=号前后不能有空格b=20c=`expr $a + $b` 使用运算符,+号前后必须有空格逻辑运算 的空格例如: [$a == $b] 是错误的,必须写成 [ $a == $b ],纳泥?!都已经用中括号 括起来了,中括号里面还要空格,这设计……关系运算符-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true

2021-11-19 17:15:14 733

原创 Android 提取java文件中的硬编码文本

java正则表达式如下\"[\u4e00-\u9fa5 0-9a-zA-Z][^\"+]*[\u4e00-\u9fa5]+[^\"+]*[\u4e00-\u9fa5,。!;:,.!;:a-zA-Z …]\"效果

2021-11-12 09:15:00 309

原创 android.view.View

android.view.View主要作用是drawing,event handling常用方法Set properties...requestFocussetOnClickListenersetVisibility(int)实现自定义ViewCategory MethodsCreation ConstructorsonFinishInflate()Layout onMeasure(int, int)onLayout(boolean, int, in

2021-09-29 17:32:05 765

原创 android.view.VelocityTracker

android.view.VelocityTracker计算touchEvent的速度,x、y方向的即时速度,Fling的底层实现用到此类。支持多个手指的touchEvent速度计算。创建实例static public VelocityTracker obtain()添加用户手指移动的MotionEvent,输入计算数据public void addMovement(MotionEvent event)计算public void computeCurrentVelocity(int uni

2021-09-29 13:21:55 217

原创 android.view.Display

如何获取屏幕物理宽高WindowManager windowMgr = getWindowManager();Display.Mode mode = windowMgr.getDefaultDisplay().getMode();System.out.println("width:"+mode.getPhysicalWidth() +" height:"+ mode.getPhysicalHeight());

2021-08-20 22:13:48 648

原创 android.view.Choreographer

应用开发一般不直接使用这个类,而是使用更高层级的类和方法。要开始 一个动画,使用 android.animation.ValueAnimator.start要在下一帧开始时,提交一个Runnable,使用 View.postOnAnimation要从下一帧开始延时提交一个Runnable,使用 View.postOnAnimationDelayed要在下帧开始时,提交View.invalidate(),使用View.postInvalidateOnAnimation() or View.postI

2021-08-11 20:26:52 434

原创 Windows网络:域控制器(DC)、AD(Active Directory)、域、域树、域森林、工作组、站点

域控制器:把坐在办公室里的一个个员工看作计算机,整个办公室看作一个域的话,域控制器就像是门禁,或是门卫,把关入口,掌控安全。域控制器也像是前台或行政,办公室新入职了哪个员工,前台或行政都知道,你可以通过她们去认识了解新员工,进而与新员工进行沟通。其他的,暂时没什么好说的,看图说话吧。...

2021-08-06 21:37:08 1957

原创 JNI 调用流程 与 JNIEvn逻辑概述

一、JNI调用流程如图所示,Java要想调用Native,首先的一个问题是,我调用的Java方法将要调用的是哪个c++方法?这个工作是由JVM来负责的,接到Java的调用请求后,JVM通过事先维护好的“Java方法”与“Native方法”的对应关系,来找到对应的Native方法。找到对应的Native方法后,再调用这个Native方法。第二个问题,那么这个“Java方法”与“Native方法”的对应关系是在哪里维护的呢?Java中加载so库(System.loadLibrary(“xxx.so”

2021-08-04 19:31:33 877

原创 十、对象序列化(object serialization)

简单概念序列化:将对象编码成字节流反序列化:从字节流编码中重新构建对象序列化代理模式是重点。它可以帮助我们避免对象序列化的许多缺陷。第74条 谨慎地实现 Serializable 接口一个类实现了Serializable接口后,一旦被发布,就大大降低了“改变这个类的实现”的灵活性。如果使用默认的序列化形式,这个类中私有的和包级私有的实例域都会成为导出API的一部分,打破了封装,不能隐藏实现细节。如果使用默认的序列化形式,并改变了类的内部表示法。用这个类的旧版本序列化一个类,再用新版本反序列化,

2021-07-06 19:04:13 1621 2

原创 九、并发 concurrent

第66条 同步访问共享的可变数据多线程编程,可以充分发挥 多核CPU的性能。保持即时的(基本类型的)变量可见性,使用volatile。非基本类型的使用 AtomicReference。变量互斥修改使用Atomic-系列类型。Java语言规范保证,除了long和double,读或写一个变量是原子的(atomic)即此操作是不可分隔的。但它不能保证一个线程写入的值对于另一个线程将是可见的。Java语言规范中的内存模型(memory model)规定了一个线程所做的变化,何时以及如何变成对其他线程可见的

2021-06-24 17:53:12 227

原创 八、异常处理

第57条 只针对异常的情况才使用异常异常应该只用于异常的情况下,它们永远不应该用于控制流。如果类具有 在某种特定状态下,才能够被调用的方法。则最好为之提供一个“状态”测试的方法,以避免去处理异常。如:Iterator的next()方法与hasNext()方法。某种特定的异常状态下,也可以返回一个特殊值,进行处理。称为“可识别的返回值”方法。怎么选择?如果对象将在多线程同步访问的情况下,则应该使用“可识别的返回值”方法。因为在“状态测试”方法和调用之前有可能对象的状态被其他线程修改了。

2021-06-21 17:30:18 204

原创 七、通用程序设计

第45条 将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方进行声明。如果变量在使用之前很早进行声明,对于阅读代码的人来说,只会分散注意力。看到使用变量的地方,早已忘记当初是怎么声明的了。还需要返回去寻找最初声明的地方。每个局部变量的声明都应该包含一个初始化表达式。如果当前还不能进行有意义的初始化,就应该推迟声明,直到可以初始化为止。循环中提供了特殊的机会来将变量的作用域最小化。for循环允许声明循环变量(loop variable),它们的作用域正好被限定在

2021-06-20 19:19:14 234

原创 六、方法相关

第38条 检查参数的有效性在 定义方法 与 构造器时,要进行“有效性检查”与“断言”。assert 默认是不启用的,这个assert真的不知道是干嘛用的。查阅文档与网上资料说的是,在开发与测试时使用,发布时禁用。第39条 必要时进行保护性拷贝如果方法的调用者,客户端是恶意的,或别的程序员没有正确使用类,可能会破坏类的状态与数据。所以,必要时进行保护性拷贝。保护性拷贝涉及到的时机是 对象构造与方法返回两个时机。对象构造:保护性拷贝要在参数有效性检测前进行,并且有效性检查是针对拷贝后的对象,而不是传

2021-06-15 15:39:40 128

原创 五、枚举和注解 enum type annotation type

一、枚举暂时跳过。因为Android开发,枚举量级有点重,尽量用常量值二、注解第35条 注解优先于命名模式Java1.5发行前,一般使用命名模式 naming pattern,表示有些程序元素需要通过某种方法进行特殊处理。如,JUnit测试框架原来要求用户一定要用test作为测试方法名称的开头。这种做法有几个缺点:文字拼写容易拼错,且没有任何提示无法确保它们只用于相应的程序元素上没有提供将特殊处理用到的参数值与程序元素关联起来的方法@Retention(RetentionPolicy.RU

2021-06-15 08:48:24 321

原创 四、泛型相关

第23条 java1.5及以后请使用泛型,不要再使用原生态类型List<E> E的列表 E是元素类型的形式参数List<String> String是对应于E的实际类型,是一个参数值几个名词:泛型 generic type 具体指泛型类和泛型接口 如:List类型参数 type parameter,也可以说是,参数化类型 parameterized type 如:E形参,String实际值。原生态类型 raw type 如:ListList和List<

2021-06-15 08:40:54 383

原创 三、类和接口

第13条 使类和成员的可访问性最小化信息隐藏 或 封装 information hiding Or encapsulation优点:解耦:各模块可以独立开发、测试、优化、使用、理解、修改提高可重用性有利于查找问题点,或可以提升性能的点有利于构建大型系统尽可能地使每个类或成员不被外部访问。四种访问级别:private 类私有default 包级protected 包级+子类public(+interface)公有由上到下是“尽量使用”到“最少使用”的顺序。长度非0的数组总是可变

2021-05-30 18:51:01 340

原创 二、对于所有对象都通用的方法

第8条覆盖equals时请遵守通用约定

2021-05-17 17:14:24 259 2

原创 一、创建对象

第一条:考虑使用静态工厂方法替代构造方法静态工厂的优点:有方法名字; 不需要每次创建新对象,有利于对象复用; 与构造方法不同,它们可以返回 其返回类型的任何子类型的对象; 可以根据输入参数的不同返回不同类的对象。如下图,在Services类写完时,Provider的具体实现类还没有。可以向Services注册不同的Provider,提供不同的Service类对象。缺点:没有公共或受保护构造方法,不能扩展出子类。第二条、当构造方法参数过多时使用 Builder 模式:当设计的类,构

2021-05-15 20:23:34 205

原创 Runtime().exec()调用后获取不到输入流?或输入流为空?

int waitFor()返回值int,子进程的exit code, 0表示正常结束boolean waitFor(long timeout, TimeUnit unit)等待固定时间:进程如果在时间限定范围内结束,效果和waitFor()一样,提前结束等待;若规定时间到了,进程还没正常结束,就强制结束。返回值true表示进程正常结束,false到了时间还没正常结束int exitValue()返回子进程的exit codedestroy 结束子进程destroyForcibly.

2021-04-30 09:17:12 1358

原创 Android 版本更新笔记 - Android 4.2

重大行为变更:声明ACCESS_COARSE_LOCATION 且没声明 ACCESS_FINE_LOCATION 时,鉴于隐私目的,定位信息会比上一版本更粗糙。系统设置 Settings.System 从写入变为只读。Android 为 WebView中的JS提供的接口必须声明 @JavascriptInterface 注解。DaydreamDreamService 实现自己的屏幕保护servi...

2018-05-03 16:44:14 445

原创 Android 版本更新笔记 - Android 4.1

App ComponentsService isolatedProcess=true  和普通进程分开,另开进程且无权限;只通过服务api进行通信;Memory managementonTrimMemory(int level)参数level来自ComponentCallbacks2类,有七个常量,但是主要关注下面两个:TRIM_MEMORY_BACKGROUND:LRU list最上面,不太可能...

2018-05-02 17:03:36 451

原创 Android EditText 字数限制

mChatMsgEt.addTextChangedListener(new TextWatcher() { private int limit = 200; // 字数限制 private CharSequence beforeSeq; // 保存修改前的值 private int afterStart; private int afterCount; ...

2018-03-20 20:51:16 1313

原创 Android 适配pad屏幕

Pad基本属于xlarge:资源目录配置修饰符物理尺寸的大小 layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)xlarge screens are at least 960dp x 720dplarge screens are at le...

2018-02-25 15:49:19 4492

原创 TextView 跑马灯

废话不多说:<TextView android:id="@+id/tv_n1" android:layout_width="150dp" android:layout_height="20dp" android:singleLine="true" android:ellipsize="marquee" a

2017-11-27 18:34:06 285

原创 WebView match_parent wrap_content 无法显示,或显示特别小

问题描述 WebView设置了match_parent或 wrap_content无法显示,或显示特别小,原因可能是加载的url 或 内容,使得webview无法计算自身的大小。 例如:html的body的高度设置成了100%,以比例的形式设置的。测试方法 加载一个其他公司的移动网站地址(如:http://m.baidu.com),测试webview的大小是否正常。解决方法: 一、如果加载的

2017-10-27 17:13:29 2772

原创 分享简单数据

发送文本数据Intent sendIntent = new Intent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");sendIntent.setType("text/plain");startActivity(Int

2017-09-29 16:05:56 326

原创 权限处理

检查权限请求权限

2017-09-27 17:52:07 485

原创 与其他应用交互 Intent

与其他应用交互 Intent

2017-09-27 16:40:45 420

原创 图片的本地压缩

问题:大图片(1m左右)上传前,该怎么处理?图片大小不变,无损质量压缩

2017-08-21 23:43:38 743

原创 Android 开发注意事项

设备配置改变时,具有ID属性的视图可以保存运行状态;视图尽量用Xml定义,少用代码生成,分离controller 与 view层;修改视图时,直接改Xml更简单;用AlertDialog时,尽量放到DialogFragment中托管;由FragmentManager管理;DialogFragment.show( FragmentManager fm, String ta

2017-07-13 13:35:13 351

原创 Service得到配置更改通知

Service得到配置更改通知Service 也可以和Activity一样在onConfigurationChanged方法内,做配置更改的相应处理。Service在 Manifest.xml文件中没有配置android:configChanges属性时,配置发生了改变,不会使Service重启。这一点和Activity是不同的。

2017-05-30 19:25:29 639

android-parcelable-intellij-plugin.jar

android parcelable code generator

2016-07-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除