- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 OpenJDK 64-Bit Server VM warning: Archived non-system classes are disabled because the java.system.c
OpenJDK 64-Bit Server VM warning: Archived non-system classes are disabled because the java.system.class.loader property is specified
2022-07-06 18:54:33
7859
8
原创 找出一个数组的长度Top k的升序子数组
找出一个数组的长度Top k的升序子数组,并按长度降序输出输入:[2,1,4,5,8,3,7,10,2,5] k=2输出:[1,4,5,8],[3,7,10]字节面试题,面试时有大概的思路没有写出来,结果可想悲催了下面时自己的实现思路,抛个砖,大神有好的解法,欢迎交流public List<List<Integer>> getTopKArray(int[] array, int k){ if(array == null){ retur
2021-08-19 11:05:11
184
原创 消息处理机制之消息处理
要分析消息处理的流程,我们需要从Looper类的loop方法开始。frameworks/base/core/java/android/os/Looper.javapublic static void loop() { final Looper me = myLooper(); final MessageQueue queue = me.mQueue; ...
2020-03-20 20:54:25
280
原创 消息处理机制之消息发送
我们通过handler发送消息一般会通过调用Handler类的sendMessage方法,下面就从sendMessage开始分析消息发送的过程。基本的流程如图所示。源码分析 sendMessage为例分析frameworks/base/core/java/android/os/Handler.javapublic final boolean sendMessage(Message msg)...
2020-02-06 22:50:14
285
原创 消息处理机制之消息队列
Android中消息处理机制主要围绕消息队列来实现的。一个线程拥有一个消息队列之后,就可以进入到一个消息循环中,同时其他线程以及线程本身可以往这个消息队列发送消息,以便在这个消息被处理时执行一个特定的操作。Android系统主要是通过MessageQueue、Looper和Handler三个类实现消息处理机制的。其中MessageQueue来描述消息队列;Looper类用来创建消息队列以及消息循...
2020-02-04 11:15:06
626
原创 消息处理机制之消息循环
Android引用程序的消息队列创建完成之后,就会调用Looer类的loop()方法,进入到一个消息循环中。按照流程图分析android源码的调用过程Looper:loop()frameworks/base/core/java/android/os/Looper.javapublic static void loop() { final Looper me = myL...
2020-02-03 22:57:05
748
原创 根Activity启动过程
一、概述从应用程序的角度出发,Activity的启动过程分为两种:一种是根Activity,另一种是子Activity。根Acitivity是launcher中以快捷图标的的形式启动,它的启动过程代表了一个Android应用程序的启动过程。子Activity由根Activity启动或有其他子Activity启动,它们可能与启动它们的Activity运行在同一个进程中也可能运行在不同的进程中,这取...
2020-01-22 12:12:55
330
原创 线程之间的协作
一、概览在线程之间共享受限资源中,通过使用锁(互斥)来同步两个任务的行为,从而使得一个任务不会干涉另一个任务的资源。线程之间的协作使得多个任务可以一起工作去解决某个问题。现在问题不是彼此之间的干涉,而是彼此之间的协调,因为在这类问题中,某些部分必须扎其他部分被解决之前解决。任务协作的关键是通过任务之间的握手,握手也是通过互斥这个基础特性来实现。互斥能够确保只有一个任务可以响应某个信号,这样就可...
2020-01-20 17:14:23
217
原创 外观模式
一、概览将从以下几个方面了解外观模式Facade模式是什么,用在何处Facade模式的关键特征Facade模式的变体二、简介《设计模式》一书对Facade模式的意图叙述:为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使使子系统更加容易使用。三、特征Facade模式提供了一组容易理解的方法,这些方法使用底层系统来实现新定义的函数。特征...
2020-01-19 16:22:03
117
原创 View事件分发
View中消息的传递对于一颗View树,它的消息的传递是自上而下,即从根节点开始逐层往子类递归传递的。在消息传递的过程中,一旦有View处理了这个消息,那么传递即宣告终止。从这一点看View树的上层有消息的优先处理权。一、View中TouchEvent的投递流程事件的处理是通过多种形式的InputStage来分别处理,如NativePostImeInputStage、ViewPostImeI...
2020-01-15 15:52:18
168
原创 View的绘制流程
一、View的绘制基础MeasureSpaceAndroid官方给的解释MeasureSpecs are implemented as ints to reduce object allocation. This class is provided to pack and unpack the <size, mode> tuple into the int.MeasureSp...
2020-01-09 14:36:03
129
原创 终结任务
一、通过条件判断退出任务任务通过判断boolean值来确定何时终止它自己实例代码:public class OrnamentGarden{ public static void main(String[] args) throws InterruptedException { ExecutorService service = Executors.newCachedT...
2020-01-05 21:36:32
136
原创 WebView常见漏洞修复
一、WebView中,主要漏洞有三类任意代码执行漏洞密码明文存储漏洞域控制不严格漏洞二、具体分析2.1 WebView任意代码执行漏洞出现该漏洞的三个:WebView中addJavascriptInterface()接口WebView 内置导出的 searchBoxJavaBridge_对象WebView 内置导出的 accessibility 和 accessibilit...
2020-01-05 16:27:41
786
1
原创 Web与JS交互
Android通过WebView与JS交互Android调用JSJS调用android一、Android通过WebView与JS交互1.1、android通过WebView调用js代码方法有2中:通过WebView的loadUrl()通过WebView的evaluateJavascript()1.2、JS通过WebView调用android代码的方式有3中:通过WebView的a...
2019-12-31 18:46:19
337
1
原创 共享受限资源
一、解决共享资源竞争1、原因:我们永远不知道一个线程何时在运行。比如你坐在桌子边,正要去叉盘子中的最后一片实物,都够着它时,突然这片食物消失了,因为你的线程被挂起,另一个用餐者坐下并吃掉了它。2、解决方式:当一个资源被一个任务使用时,在其上加锁。第一个访问某项资源的任务必须锁定这项资源,是其他任务在被 解锁之前无法访问它,其被解锁之时,另一个任务就可以锁定这项资源并使用它。方案:基本上...
2019-12-31 11:09:16
197
原创 基本的线程机制
线程是比进程更轻量级的调度执行单位,各个线程既可以共享进程资源(内存地址、文件IO),又可以独立调度(线程是CPU调度的最小单元)。多进程和多线程的区别:1、本质区别在于每个进程拥有自己一整套变量,线程则是共享数据。因此共享变量使线程之间的通信比进程之间的通信更有效、更容易。2、与进程相比较,线程更“轻量级”,创建、撤销一个线程比启动新进程的开销要小的多。一、定义任务1)通过实现Runn...
2019-12-31 11:08:34
288
原创 WebView常用方法
一、简介WebView是一个基于webkit引擎、继承自View,用于展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了 Chromium。更改后会提升WebView性能,并支持HTML5,CSS3和JavaScript的标准已匹配最新的Web浏览器。二、使用介绍WebView类常见方法WebView工具类WebSe...
2019-12-31 11:04:08
1443
原创 通过服务启动消息通知
在Android实例代码中,一个通过服务来启动消息通知的damo,代码比较简单public class NotifyService extends Service {private ConditionVariable mCondition;//控制消息线程private NotificationManager mNN;//消息管理器@Overridepublic v
2015-09-18 17:42:18
467
翻译 android.view.WindowManager$BadTokenException & Android – Displaying Dialogs From Background Threads
android.view.WindowManager$BadTokenException & Android – Displaying Dialogs From Background Threads 使用线程子在后台处理一些繁重的和耗时的操作是非常标准的。后台线程结束后通常你可能会使用对话框提示或通知用户。 对话框是在主线程中产生的,因此你可以在子线程对应的Handle
2015-09-16 10:28:34
437
原创 ListView下拉刷新
ListView下拉刷新是在开发过程中经常用到的一个功能,整理如下,如果初学者有需要可以作为参考。下拉刷新头部布局如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="ma
2015-07-01 15:09:38
320
翻译 翻译AsyncTask官方文档
在UI线程中可以非常容易的使用AsyncTask。 这个类允许在后台操作和向主线程发送消息,而不必使用thread和handler。 AsyncTask是在Thread和Handler之间的一个帮助类,并不能构成一个一般的Threading框架。AsycTask适用于短时操作,最多几秒钟。如果那你想要有长时间的耗时操作,请使用java.util.concurrent包下的API,比如
2015-03-13 13:12:22
405
转载 【Android开发经验】Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
本篇文章主要纪录我在学习过程中,发现的非常给力的优快云Blog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要你下定决心跟随强者的脚步,成为人们眼中的大神,只不过是时间问题! 下面排名不分先后 优快云 鸿洋:http://blog.youkuaiyun.com/lmj623565791
2015-02-12 13:13:31
418
转载 为Eclipse添加Java和Android SDK源代码
做Android开发最美妙的莫过于可以看到它的架构的源代码,站在其架构的角度观察能让我们选择更加适合的解决方案。(注意分清楚操作系统源代码和SDK源代码 - -!) Eclipse如果没有导入源码,当我们Ctrl + Click时候会看到如下提示: 看不到源码是多么沮丧的事情。 如何为Eclipse添加Java源代码和A
2015-01-22 12:04:48
523
原创 抽象类
抽象类的定义:包含有抽象方法的类为抽象类。如果一个类中包含了一个或多个抽像方法,此类一定被限定为抽象的。抽象方法的声明所采用的语句: abstract void f();如果一个类继承了抽象类,并想创建该类的对象,那就必须为基类中的所有抽象方法提供方法的定义。如果不这样做那么导出类也为抽象类
2015-01-18 11:23:46
296
原创 Activity的四种状态
Activity主要有四种状态:Runing 状态 处于屏的最前端, 栈的最上端, 此时处于可见并能与用户交互的激活状态pause 状态 当Activity被另一个透明或者Dialog样式的Activity 覆盖的状态,此时仍然可见但是已经失去了焦点不能与用户进行交互stop状态 当Activity 不可见时, Activity处于stop状态。 Activity
2015-01-10 22:25:48
679
原创 Java中的一些数学运算
斐波那契额数列的实现:一个斐波那契额数列是有数字 1, 1, 2, 3, 5, 8, 13, 21, 34, 55等数组成的,其中每一个数字都是前两个数字的和可以采用两种方式实现 递归和递推递归实现: int fib (int n){if(n return 1;return ( fib(n-2) + fib(n-1));}递推实现:
2015-01-10 10:47:25
281
原创 Java中自动递增和递减
对于Java中递增递减的运算一直困惑了好久,今天终于可以在次梳理,来理清自己的思路递增和递减是Java中两个不错的快捷运算,它有两种使用方式(“前缀式”和“后缀式”) 前缀式表示++操作位于变量表达式的前面,而后缀式表示++操作位于表达式的后边对于前缀++ 表示先执行运算,在生成值。后缀++ 表示先生成值,再执行运算。--也是类似的在一家公司的面试题int a = 10;
2015-01-08 13:02:22
756
转载 Eclipse快捷键
在Eclipse里,写一个没有导入相应包的类名(这个类名已经完全写全,比如LayoutManager), 可以用ctrl+shift+M/Ctrl+Shift+o/Ctrl+1导入相应的包. MyEclipse 快捷键1(CTRL) ------------------------------------- Ctrl+1 快速修复 Ctrl+D: 删除当前行 Ctr
2015-01-06 17:54:59
231
原创 回首2014,展望2015
2014年转眼已经过去了,回望这一年的自己,发现自己并没有因为年龄的增长,而变得更加成熟。回望这一年感觉都是自己的心酸泪,考研的失败工作的不顺心,回想起来都和自己的自己的性格有关,做事没有规律,不能够严以律己导致自己现在的懒散的性子,做事情太看重结果,而不能体会这之中的快乐是多么的可怕啊。 接下来要改变自己散漫的性格做什么事情都要一心一意的去做,要去体会做事之中的快乐 2015年对自己
2015-01-05 21:39:54
331
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人