android线程

RxJava 1.x使用与理解

爱⌒轻易说出口 提交于 2019-12-10 06:14:39
RxJava 1.x使用与理解——2018.5.22 前一段时间,项目引入RxJava,用起来很简单,但是对原理不甚理解,于是参考各种资料,对照源码,进行了深入学习,写在这里,希望对看到的小伙伴有所帮助 RxJava源码理解并不简单,感谢各位前辈们的无私分析分享,才让我能更高效地学习进步,再次感谢! 本文定位:学习笔记 学习过程记录,加深理解,提升文字组合表达能力。也希望能给学习RxJava的同学一些灵感 大部分内容整理于 [此文] RxJava是什么 tips:无相关基础的话,看了下面的相关定义,是不太可能直接理解的,所以,不建议一开始纠结于此段内容,可以先看后面内容,回头就会豁然开朗了。 RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. ————官网 翻译:RxJava – Reactive Extensions for the JVM – 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 这是需要强调的是** Reactive Extensions **,响应式编程扩展

[Android] Android中Thread和Service的区别

余生长醉 提交于 2019-12-07 09:13:11
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。 1). Thread: Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。 2). Service: Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。 因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有! 既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该

Service 与 Thread 的区别

血红的双手。 提交于 2019-12-07 09:12:59
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有! 既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该

Android中Service与Thread的区别

試著忘記壹切 提交于 2019-12-07 09:12:24
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。 1). Thread: Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。 2). Service: Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。 因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有! 既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该

这位程序媛是如何拿下 BAT 等 7 家名企 Offer的?面经就在这!

随声附和 提交于 2019-12-06 21:09:06
程序媛 厘米姑娘 今年年底 Android 薪资待遇回暖,3-6年左右的开发很受社招欢迎,应届生也很受企业欢迎。因此这里列举了下妹子的面试经历。 本篇先以日历形式回顾秋招之路,方便各位参考某厂的处理进度;总结归纳春秋招 Android 面试题库;最后做个总结还有展望,开始新的征程~ 校招日历 在X团实习的最后一周项目在提测,相比开发阶段着实轻松了不少,所以开始改简历、投简历和复习,复习内容主要是个人博客和春招总结的笔记。 不过各厂子简历处理速度令我始料不及,在紧接的下一周就被各种面试狂轰滥炸,这波操作来得快去的也快,现已拿到BAT、美团、vivo、爱奇艺和一点资讯的(口头)offer,自此整个秋招以面试 0 Error 完美收官。 面试部门及全部流程: 杭州/阿里/数据技术及产品部:2轮技术面+交叉面+hr面 深圳/腾讯/OMG/腾讯视频:2轮技术面+hr面 北京/百度/百度APP研发部:3轮技术面+文化测评 北京/爱奇艺:3轮技术面 深圳/vivo:1轮技术面+hr面+线下交流会 北京/一点资讯:3轮技术面+hr面 题库大全 我认为看面经主要是为了查缺补漏,自己也要有一定的知识储备和学习体系,而不是临时抱佛脚、试图通过背题背答案方式应付面试,只有自己真学会的东西才能侃侃而谈,更有自信。 Android Activity Q:说下Activity的生命周期? Q:onStart(

Android 计时器Timer用法

人走茶凉 提交于 2019-12-06 16:54:36
昨天晚上在写一个Android的计时器,开始认为很容易,用Java一般写法,结果发现计时器根本不能运行,但却不报任何错误,当时就呆在那了,不知道该怎么办了,后来在网上查了一下,Android考虑到线程安全问题,不允许在线程中执行UI线程(我的现在所知道,还有其他的限制发现中),在Android中,有一个很有意思的类:android.os.Handler,这个可以实现各处线程间的消息传递。 先看段代码,这个实例化了一个Handler,Handler可以通过Message在多个线程通讯,我这里做的是定时recLen加1,然后以一定的格式,显示到recTime上(UI线程上的操作)。 Code 1 final Handler handler = new Handler(){ 2 public void handleMessage(Message msg) { 3 switch (msg.what) { 4 case 1 : 5 recLen ++ ; 6 recTime.setText(GetRecTime(recLen)); 7 break ; 8 } 9 super .handleMessage(msg); 10 } 11 }; 下面定实例化一个TimerTask,这个是为Timer提供一个定时执行的内容。我在这个方法中加的是给Handler一个发送消息功能,因这在Timer的线程中

回调函数、同步、异步、阻塞、非阻塞、D-BUS等概念的理解

强颜欢笑 提交于 2019-12-06 08:08:12
同步、异步与阻塞、非阻塞 这个几个概念很容易被混淆。这些概念基本都是使用在多个部件进行协作或需要在一定时间内完成的场景中。 首先,将这几个概念的定义和应用场景分析一下: 同步、异步 同步 同步的概念是应用在线程上,线程之间的同步是指两个或多个线程对同一个资源的协调使用。 那么什么是同步函数哪? 仍然与线程和资源有关。这里的资源,可以看做线程的操作任务。通常,此时同步函数内有对资源的同步操作,如mutex等。 当一个线程调用一个同步函数时(例如:该函数用于完成写文件任务),如果该函数没有立即完成规定的操作,则该操作会导致该调用线程的挂起(将CPU的使用权交给系统,让系统分配给其他线程使用),直到该同步函数规定的操作完成才返回,最终才能导致该调用线程被重新调度。 异步 而异步函数,则是即使函数中的操作没有完成,没有结果返回,主线程也不会被阻塞。 而函数的任务则可能由其他线程或子线程来完成。完成后,再通知调用主线程,主线程内应该有相应的机制等待或响应处理结果(这里又是一个主线程对函数结果进行等待处理的过程)。 而当调用结果出来时,通知主线程的方式,即异步调用的实现方式有哪些? 回调函数(register, response)、event(windows)、消息(windows) 阻塞、非阻塞 不同的背景知识,对这些概念的使用范围也不同,这里特指网络IO的阻塞、非阻塞。另外多路IO,

程序性能优化之启动速度与执行效率优化(一)下篇

早过忘川 提交于 2019-12-06 02:45:09
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 本篇文章将继续以下两个内容来介绍启动速度与执行效率优化: [StrictMode 详解] [Systrace和TraceView] 一 StrictMode 详解 1.1 如何启用 StrictMode 我们通常在 Activity 或者自定义的Application类中启动 StrictMode,代码如下: public void onCreate() { if (DEVELOPER_MODE) { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog()

Testing和Instrumentation

ⅰ亾dé卋堺 提交于 2019-12-05 20:43:00
Android 提供了一系列强大的测试工具,它针对 Android 的环境,扩展了业内标准的 JUnit 测试框架。尽管你可以使用 JUnit 测试 Android 工程,但 Android 工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。 Android 测试环境的主要特征有: 可以访问 Android 系统对象。 Instrumentation 框架可以控制和测试应用程序。 Android 系统常用对象的模拟版本。 运行单个 test 或 test suite 的工具,带或不带 Instrumentation 。 支持以 Eclipse 的 ADT 插件和命令行方式管理 Test 和 Test 工程。 这篇文章是对 Android 测试环境和测试方法的简要介绍,并假设你已经拥有一定的 Android 应用程序编程及 JUnit 测试的经验。 概要 Android 测试环境的核心是一个 Instrumentation 框架,在这个框架下,你的测试应用程序可以精确控制应用程序。使用 Instrumentation ,你可以在主程序启动之前,创建模拟的系统对象,如 Context ;控制应用程序的多个生命周期;发送 UI 事件给应用程序;在执行期间检查程序状态。 Instrumentation 框架 通过将主程序和测试程序运行在同一个进程来实现这些功能。

JAVA线程11

こ雲淡風輕ζ 提交于 2019-12-05 17:44:29
一、概述 1. new Thread的弊端 (1)每次new Thread新建对象性能差。 (2)线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom(内存溢出)。 (3)缺乏更多功能,如定时执行、定期执行、线程中断。 2. 线程池 线程池是指管理同一组同构工作线程的资源池,线程池是与工作队列(Work Queue)密切相关的,其中在工作队列中保存了所有等待执行的任务。工作线程(Worker Thread)的任务很简单:从工作队列中获取一个任务,执行任务,然后返回线程池并等待下一个任务。 3. 线程池的组成 一个线程池包括以下四个基本组成部分: (1)线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务; (2)工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务; (3)任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等; (4)任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。 4. 什么时候适合使用线程池 在多线程应用中,如果大量的资源都耗费在创建和销毁线程上,那么可以使用线程池。 5. 合理利用线程池带来的好处 (1)降低资源消耗