大巧不工


  • 首页

  • 归档

  • 标签

  • 分类

  • 搜索

leetcode_整型反转

发表于 2019-08-27

题目
Given a 32-bit signed integer, reverse digits of an integer.

Example 1:
Input: 123
Output: 321

Example 2:
Input: -123
Output: -321

Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

阅读全文 »

Service详解

发表于 2019-05-14

生命周期

  • onStart弃用,但是还是会回调,在onStartCommand之后
  • 所有bind的client都unBind之后,回调onUnbind
  • 如果只有bind,那么所有bind的client都unBind之后,回调onUnbind和onDestroy
  • 如果有startService,那么所有bind的client都unBind之后也不会销毁Service,必须stopService才能销毁
  • 对于一个新创建的Service,onBind只会调用一次,因为下个client绑定的时候会默认发同一个binder,如果onUnbind返回false,那么onUnbind也只会回调一次
  • 对于一个新创建的Service,因为onBind只会调用一次,如果下次绑定时想在绑定阶段做一些事情,就覆写onUnbind并返回true,那么之后每次绑定都会回调onRebind,onRebind在返回ServiceConnection后回调,同时绑定的client都unBind后,还是回调onUnbind

Android-Intent-Filter

发表于 2019-05-13

概述

只有一个intent内的action、category和date都能匹配上一个intent filter时才会启动对应的Activity。当然,这三者都有对应的匹配规则

  1. action
    manifest中,一个intent filter可以有多个action。我们跳转时,intent中只能设置一个action,这个action必须与intent filter中的一个action匹配
  2. category
    manifest中,一个intent filter可以有多个category。我们跳转时,intent可以add多个category,每个category都必须与intent filter中的某个category匹配,才算匹配上。category不能为空,intent中如果不设置category,系统会自动添加默认的categoryandroid.intent.category.DEFAULT。在manifest中设置intent filter时,也要记得,如果想让Activity接受隐式启动,必须加上android.intent.category.DEFAULT这个默认的category.
阅读全文 »

android生命周期

发表于 2019-05-13

Activity生命周期

Android生命周期还是比较简单明了的:

  • onCreate: 做初始化,设置UI
  • onStart:1. 在onCreate后调用,2. Activity被Stopped,但是又被放到前台展示,会先回调onRestart,再回调onStart
  • onResume:1. 动画在这里做,2. 如果想标识Activity可见,onResume不是最好的选择,最好使用onWindowFocusChanged
  • onPause:A启动B,A先回调onPause,B再回调onCreate,这里经常用于保存持久的数据,停止动画等一些消耗资源的操作,这样可以快速启动下一个Activity
  • onStop:做一些重量级的回收
  • onDestroy:做一些最终的回收工作和资源释放,不适合做数据保存,因为某些情况下,系统会直接杀死进程,而不会回调这个方法
  • onRestart:Activity A被置于后台,生命周期走到onStop,然后又返回前台时,先回调onRestart,在回调onStart->onResume
阅读全文 »

java垃圾回收全了解

发表于 2019-05-08

简介

说起垃圾回收,很多人会自动和java联系上,认为是java的伴生产物,事实上,GC的历史远比java久远。很久以前,人们就开始思考GC需要完成的3件事情

  1. 哪些内存需要回收
  2. 什么时候回收
  3. 如何回收
    当然这也是java一直思考和完善的三个问题。我们知道,java内存运行时区域主要有这几个部分:pc寄存器、虚拟机栈、本地方法栈、堆、方法区。其中,pc寄存器、虚拟机栈、本地方法栈随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出有条不紊的执行入阵和出栈操作,每个栈帧分配多少内存基本是类结构确定下来时就已知的,因此这些区域的内存分配和回收都具备确定性,这些区域不需要考虑回收的问题。而堆和方法区则不一样,每个类占用的内存空间不一样,我们只有在程序运行时才会知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾回收器关注的就是这部分内存。
阅读全文 »

Lock原理

发表于 2019-05-06

Android Activity的四种启动方式

发表于 2019-05-06

Android四种启动方式

Activity有四种启动方式:
以下是Android developer介绍的,但是实际情况会有所出入
| 使用场景 | Launch Mode | 是否多实例 | 介绍 |
| —————- | ————– | ———- | ——————————————————————————————————————————————————————————————————————— |
| 绝大多数使用场景 | standard | 是 | 默认模式,系统总会在目标任务栈中创建一个新实例,并把intent传给它 |
| 绝大多数使用场景 | singleTop | 根据情况 | 如果一个实例存在且位于目标任务栈的顶端,那么系统会将intent通过onNewIntent传给该activity,而不会创建一个新实例 |
| 特殊场景使用 | singleTask | 否 | 系统创建一个新的任务栈和一个新的activity实例,将activity实例放在栈底。但是,如果已经有一个这个Activity的实例,系统会回调这个实例的onNewIntent方法,而不会创建新实例(注意:此处介绍与实际情况有出入,后面会详细介绍) |
| 特殊场景使用 | singleInstance | 否 | 和singleTask几乎一样,不同的是,singleInstance存在的任务栈,不会有其他任何activity,该Activity是其所在任务栈内唯一的一个Activity |

阅读全文 »

java虚拟机结构

发表于 2019-05-05
  • pc寄存器
  • 虚拟机栈

    • 栈帧
      • 随着方法调用创建,随着方法结束
      • 可以在堆中分配
      • 局部变量表
      • 操作数栈,真正的计算发生在这里
      • 当前方法所属类的运行时常量池
  • 堆

  • 本地方法栈
    • c stack
  • 方法区
    • 内存共享
    • 堆的逻辑部分,可以不实现垃圾回收
    • 运行时常量池
      • 加载类或接口到虚拟机后,就会创建运行时常量池

单例

发表于 2019-05-03

什么是单例模式

单例模式可以使一个类只有一个对象,能减少频繁创建对象的时间和空间开销。
单例模式需要注意的点

  1. 构造方法私有
  2. 如果是延迟加载,对象实例需要私有;
  3. 注意线程安全
阅读全文 »

死锁知识点

发表于 2019-05-03

什么是死锁

两个线程分别是线程1和线程2。线程1执行过程中,先获得对象a的锁,然后要再获得b的锁才能继续执行代码;而线程2正巧相反,先获得对象b的锁,然后要再获得a的锁才能继续执行代码。这时,两个线程都等着对方解锁,才能继续执行,这时,两个线程就进入等待状态,最终不会有线程执行。这就变成了死锁。

简单的死锁代码

阅读全文 »
12…5
99个小号

99个小号

41 日志
4 分类
14 标签
GitHub Weibo
© 2017-12 — 2019 99个小号