自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小仓猪的博客

积累开发知识与技术,勤能补拙

  • 博客(18)
  • 收藏
  • 关注

原创 Android 消息机制: ThreadLocal

前言ThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定的线程中可以获取到存储的数据,对于其他线程来说则无法获取到数据在 Android 的消息机制中,每个线程的 Looper 实例都是不同的,各个线程之间的 Looper 都在独立的轮询消息队列,它们之间没有任何的交集,互不干扰,这其实就是通过 ThreadLocal 来实现的:public static @Nullable Looper myLooper() { //从Threa

2020-06-29 17:32:46 215

原创 【行为型设计模式】策略模式

一. 定义在很多情况下,实现某个目标的途径不止一条,例如外出旅游时游客可以选择多种不同的出行方式,如骑自行车,坐汽车,坐火车,或者坐飞机。在软件开发中,实现某一功能有多种算法,比如实现一个排序功能,就有快速排序、归并排序和堆排序等等,一种常用的方法是将所有的算法都集中在一个类中,但是此时如果需要增加一种新的算法,需要修改算法类的源代码,这样就破坏了开闭原则,而且维护也比较困难这种情况下就可以...

2019-07-17 12:37:03 208

原创 【排序算法】快速排序

快速排序和归并排序一样,都是应用了分治法的排序算法一. 算法思想划分:选定一个记录作为轴值,以轴值为基准将整个序列划分为两个子序列r1r_1r1​…ri−1r_{i-1}ri−1​和ri+1r_{i+1}ri+1​…rnr_nrn​,轴值的位置i在划分的过程中确定,并且前一个子序列中的记录都小于或等于轴值,后一个子序列中的记录都大于或等于轴值求解子问题:分别对划分后的每一个子序列递归处理合...

2019-07-16 23:54:08 282

原创 【排序算法】归并排序

归并排序是应用分治法的一个完美例子,归并排序按照记录在序列中的位置对序列进行划分一. 算法思想划分:将待排序序列r1,r2,…,rn划分为两个长度相等的两个子序列r1,…,rn/2和rn/2 + 1,…,rn求解子问题:分别对这两个子序列进行排序,得到两个有序子序列合并将两个有序子序列合并成一个有序序列二. 算法过程首先执行划分过程,将序列划分为两个子序列,如果子序列的长度为1,则划...

2019-07-15 16:57:45 204

原创 【排序算法】冒泡排序

冒泡排序是运用蛮力法解决排序的一种算法,这种算法比较清晰易懂基本思想两两比较相邻数据,如果反序则交换,直到没有反序的数据为止实现思路在这里我们以升序排列为例子将整个待排序的记录序列划分成有序区和无序区,初始时有序区为空对无序区从前向后依次比较相邻记录,若反序则交换,从而使值较大的记录往后移动(像气泡一样浮上来)重复执行第二步,直到无序区没有反序的记录设计代码时,我们可以用一个标...

2019-07-02 22:45:06 268

原创 Android四大组件 - 广播机制使用解析

标准广播是一种完全异步执行的广播,在广播发出后,所有的广播几乎会在同一时刻收到这条广播消息,它们之间没有任何先后顺序可言。它是无法被截断的有序广播是一种同步执行的广播,在广播发出后,同一时刻只有一个广播接收器能收到这条广播消息,当这个广播接收器的逻辑执行完毕后,广播才会继续传递。优先级高的广播可以先接到消息,它是可以被截断的,截断后后面的广播接收器将无法接收到广播消息动态注册广播首先...

2019-07-01 20:58:26 248

原创 Android四大组件 - Service使用解析

Service是Android实现程序后台任务的解决方案,非常适合处理一些不需要与用户交互但又要长期运行的任务。但不要被它的“后台”二字所欺骗,Service默认并不是运行在子线程中的,他同样和Activity一样运行在UI线程。所以需要在Service中执行耗时操作时,必须创建一个子线程来完成。1. Service生命周期Service的生命周期比Activity来说简单得多,只有3个,分别...

2019-06-27 10:57:35 181

原创 Android四大组件 - Activity的生命周期和启动模式

Activity是Android提供给开发者的四大组件之一,主要作用是展示视图、与用户进行交互。当用户初次启动Activity时、当用户执行跳转到另外一个Activity或切换到其他应用时,Android都会调用Activity的一系列生命周期方法,开发者可以在相应的生命周期方法处理一些必要的操作。生命周期...

2019-06-25 08:48:57 237

原创 Android Studio导入Github项目的方法

最近在github上下载开源项目,导入Android Studio的时候遇到各种问题,导入之后无法正确编译等问题。最终,通过修改项目里面的几个文件就可以成功编译运行了。1. 下载项目在github上找到你想要下载的Android项目,然后点击下图中的下载压缩文件,并解压文件2. 修改项目文件内容先看一下我们下载的项目的目录结构其中build.gradle和gradle/wrapper...

2019-06-22 19:00:17 6880

原创 用一个简单的登录例子了解MVP思想

相信大家都或多或少的了解过MVP(全称:Model View Presenter)架构,MVP是从MVC演变过来的。MVC模式中,Activity即充当VIew又充当了Controller,使得Activity内的代码十分臃肿,难以进行维护,而MVP模式就很好的解决了这个问题。学习MVP架构对于自身的面向对象的理解也能更加深刻。上面这张图片就可以很清晰的看出MVP各层之间的交互,其中:Mo...

2019-06-20 21:59:32 297

原创 解决ubuntu 16.04显示wifi已禁用

作者所使用的电脑型号为:acer aspirs 4750G五一小长假,闲来无事,把表姐尘封已久的笔记本电脑装个ubuntu学习学习,装机过程就不多说了,百度一大堆的方法。在这里主要是解决一个装机完成后遇到的一个问题。装机完成后,作者欣喜若狂,打开手机的热点,然后准备启动ubuntu的wifi连接热点,发现wifi已被禁用,百度后知晓是wifi被硬件关闭具体解决方法可以参考下面这篇文章:h...

2019-05-02 10:47:29 3618

原创 【创建型设计模式】单例模式

一. 单例模式的实现单例模式的目的就是保证一个类有且仅有一个实例,并提供一个访问它的全局访问点。单例类拥有一个私有的构造函数,从而确保用户无法通过new实例化这个类。单例类中还包含一个静态私有成员变量与静态公有的工厂方法,这个工厂方法负责检验实例的存在性并实例化自己,然后存储在静态私有成员变量中,以确保只有一个实例被创建。单例模式的实现代码如下:public class Singleton ...

2019-04-25 21:10:08 189

原创 一个简单的自定义圆角ImageView

最近在学自定义View的过程,然后想到有个很常用的圆形头像View,想自己动手实现一下,以为自己应该可以实现一个简单的圆角ImageView,真正写起来才发现还有很多知识点不懂。起初的思路是想把图片画上去然后扣个圆出来,然后发现图片画上去了不知道怎么扣,这就很尴尬了。最终实在不行就跟着鸿洋大神的文章实现了一个,看完才发现,卧槽,还能这样。果然是基础不够哇。下面是文章的链接,实现过程代码...

2019-04-25 20:15:02 1342

原创 使用Intent跳转活动

Intent大致可以分为两种:显示Intent和隐式Intent1. 显示Intentbutton.setOnclickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this, SecondActi...

2019-03-21 09:51:02 348

原创 通过源码分析Anroid消息处理机制

前言最近通过微信公众号推文以及博客文章学习了Android的消息机制的原理,然后抽空写下了这篇文章,对自己学到知识进行梳理,也方便以后自己查阅。主线程不处理耗时操作,子线程不更新UIHandler消息处理机制在Android中占有非常重要的地位消息机制的大概流程:系统启动后,系统主线程会创建一个Looper对象,然后调用Looper.loop()开启一个死循环,循环会不断地从消息队列...

2019-03-08 22:25:04 172

原创 Handler内存泄漏分析与解决方法

内存泄露在 Android 开发中是一个比较严重的问题,系统给每一个应用分配的内存是固定的,一旦发生了内存泄露,就会导致该应用可用内存越来越小,严重时会发生 OOM 导致 Force Close,所以在平时的开发中应该避免引发内存泄漏

2019-01-11 09:40:56 209

原创 Java多线程开发——一个简单的数字加减小例子

范例:两个线程实现加法,两个线程实现减法class Resource { private int num = 0; private boolean flag = true; //flag = true 表示可以进行加法操作,不能进行减法操作 //flag = false 表示可以进行减法操作,不能进行加法操作 public synchronized void add() thro...

2018-12-03 12:29:27 2136 5

原创 Android Studio中上传项目到码云时的一些问题

最近工作室开展以交流栈分享所学的知识,需要把代码上传到码云,然后我按照网上的一些教程上传的时候,却遇到了很多的问题,下面是对我遇到的问题的总结。如果还不知道怎么把Android Studio中的项目上传到码云的可以看下面的一条博客,里面写的挺详细的: http://blog.csdn.net/lei_notes/article/details/53287447我按照上面的步骤弄完之后,无法上传

2017-10-15 20:08:10 1134

空空如也

空空如也

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

TA关注的人

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