- 博客(196)
- 资源 (22)
- 收藏
- 关注
翻译 Efficient Android Threading序言
第七章:描述最基本的异步构造,即java.lang.Thread,以及如何处理可能出现的各种状态和问题。第八章:显示在后台按顺序运行任务的便捷方法。第九章:提供处理调度、错误和线程处理的其他方面(如线程池)的技术。第十章:介绍AsyncTask(可能是最流行的异步技术)以及如何正确使用它以避免其缺陷。第十一章:介绍基本的服务组件,该组件对于您希望提供给多个应用程序的功能或在后台执行期间保持应用程序活动非常有用。第十二章:在前一章的基础上,讨论了在主UI线程外执行的有用技术。
2024-12-01 23:58:52
34
翻译 第十四章:使用 Loaders 来实现自动化地后台执行
Loader框架是添加到Android平台的最新异步技术。它是一个异步执行的框架,当涉及到CursorLoader时,它会大放异彩,因为它封装了特定用例的困难-即,内容提供商,并有效地解决它。该框架还通过允许自定义加载器实现提供了灵活性,但这需要应用程序付出更多的努力,考虑其他异步技术可能会更好。
2024-12-01 23:47:32
70
翻译 第十三章:使用AsyncQueryHandler 访问 ContentProviders
本节包含有关内容提供商的一些基本信息。有关详细信息,请参阅官方文档。ContentProvider是数据源的抽象,可以在应用程序中统一访问,也可以从在单独进程中运行的其他应用程序访问。访问方法源自提供程序最常见的用例:跨应用程序边界公开存储在SQLite数据库中的数据。
2024-12-01 22:45:06
38
翻译 第十二章:IntentService
IntentService是一个易于使用的顺序任务处理器,它不仅对于从UI线程卸载操作非常有用,而且对于从其他原始组件卸载操作也非常有用。本书中讨论的其他顺序任务处理器,如Thread、Executors.newSingleThreadExecutor和AsyncTask在某种程度上可以与IntentService相比较,但IntentService具有作为独立组件运行的优势,而其他组件则没有。
2024-12-01 22:14:27
27
翻译 第十五章:总结-选择一种异步技术
正如我们所看到的,Android平台为我们提供了许多异步技术来帮助我们同时运行任务和脱离UI线程运行任务。如果没有这些技术,就不可能实现快速响应的应用程序,因此它们成为核心功能的一部分。技术的范围是有帮助我们,使编码更容易,但我们总是要作出选择,使用哪些技术。有时选择很容易,例如,CursorLoader从提供程序阅读数据时,但我们经常会遇到几种机制可以解决这个问题的情况。在这种情况下,我们自然会习惯于使用我们以前知道并使用过的机制。
2024-12-01 21:47:40
32
翻译 第十一章:Services
服务在UI线程的后台运行,它非常适合将任务卸载到后台线程。可以更好地控制服务组件的生命周期,以适应后台线程,而不会让用户交互干扰组件的销毁,就像Activity一样。服务可以是活动的,直到所有后台任务完成。
2024-12-01 21:22:10
28
翻译 第十章:使用AsyncTask将后台任务绑定到UI线程
AsyncTask中预定义的执行程序SERIAL_EXECUTOR和THREAD_POOL_EXECUTOR是应用程序全局的,当应用程序执行大量任务时会存在性能损失的风险。自定义执行程序取代了AsyncTask中的执行环境,但保留了线程之间的进度更新通信:重写的方法以与预定义的执行程序相同的方式被调用。使用自定义(非全局)Executor与AsyncTask结合使用可以更好地处理顺序执行,例如第9章中描述的单线程执行程序。
2024-11-30 18:20:43
55
翻译 第九章:通过Executor框架对线程执行的控制
固定大小的线程池维护用户定义数量的工作线程。终止的线程被新线程替换,以保持工作线程的数量不变。这种类型的线程池是使用Executors.newFixedThread Pool(n) 创建的,其中n是线程的数量。这种类型的线程池使用无限任务队列,这意味着允许队列随着新任务的添加而自由增长。因此,生产者在插入任务时不会失败。动态大小,也就是. cached-thread pool在有任务要处理时,根据需要创建一个新线程。空闲线程等待新任务执行60秒,然后如果任务队列仍然为空则终止。
2024-11-30 17:03:32
34
翻译 第八章:HandlerThread,一种高级的线程机制
前文中提到的“Android消息传递”描述了在线程上使用消息队列和调度机制进行后台执行。该应用程序将消息队列和调度机制显式耦合到一个线程上。相反,您可以使用HandlerThread,它是一个方便的包装器,可以自动设置内部消息传递机制。本章内容包括:• 如何使用HandlerThread• HandlerThread与手动设置消息传递机制相比的优势• HandlerThread的用例HandlerThread是一个具有消息队列的线程,它包含Thread、Looper和MessageQueue。
2024-11-28 23:32:48
125
翻译 第七章:Android中如何管理线程的生命周期
在 Java 中,当执行路径到达结尾并且没有更多代码可执行时,运行中的线程通常会正常终止——即,在 Runnable.run() 方法的结尾处。例如,如果一个线程需要很长时间才能下载视频,并且用户按下取消下载按钮,则 UI 线程会捕获按钮按下事件,并希望终止下载线程。相反,线程可以被中断,这是一种请求线程终止的方法,但线程自己决定是否遵从。应用程序可以应用逻辑将线程引用存储在列表中,或者确保仅在之前启动的线程不再活动时才启动新线程,但是线程可能需要一些额外的逻辑来限制并发任务的数量。这是线程的最终状态;
2024-11-28 23:09:56
89
翻译 第六章:Android内存管理
这些对象中的大部分仅在生产者线程中被引用,因此可以在其退出时进行垃圾回收,但是Handler是内存泄漏的候选对象,因为它通过一系列对象链被从消费者线程引用,如图6-8所示。对象被分配在堆上,可以被垃圾回收,当它们被线程引用时,在内存中保留。一旦删除了对对象的最后一个引用,或者(在图 6-1中的C对象的情况下)如果剩余的引用没有任何对象连接到GC根,该对象就是不可达的。在以下示例中,只要该线程正在运行,Outer类中的任何对象都必须保留在内存中,以及内部SampleThread类中的对象。
2024-11-27 23:16:46
35
翻译 第五章:Android进程间通信
服务器进程可以向客户端进程发出事务并反转流程:原来的服务器进程成为客户端,并在原来的客户端进程中执行另一个Binder实现的事务,其自己的binder线程处理。如果多个客户端线程同时调用服务器进程中的阻塞方法,则binder线程池可能会耗尽线程,从而阻止其他客户端线程从远程调用中获取结果。如果服务器进程在执行onTransact时启动一个事务,调用transact向客户端进程发送请求,那么客户端进程将不会在一个binder线程上接收到传入的请求,而是在等待第一个事务完成的线程上接收到请求。
2024-11-27 22:45:27
45
翻译 第四章:Android线程间通信
Android应用程序可以访问常规的Java线程通信技术,这非常适合工作线程之间的通信。然而,它们很少适用于其中一个线程是UI线程的情况,这是最常见的情况。在Android应用程序中广泛使用消息传递,无论是显式地还是通过本书第二部分中讨论的各种包装技术隐式地使用。
2024-11-27 00:34:17
234
翻译 第三章:Android应用程中的线程
Android 中的所有线程类型——UI、binder 和后台线程——都是 Linux Posix 线程。当应用程序启动时,它具有一个 UI 线程和 一组 binder 线程,但应用程序必须自己创建后台线程。默认情况下,所有 Android 组件都在 UI 线程上执行,但长时间运行的任务应在后台线程上执行,以避免 UI 渲染变慢和 ANR 的风险。UI线程是最重要的线程,但与其他线程相比,并没有特殊的调度优势——调度程序不知道哪个线程是 UI 线程。
2024-11-25 23:22:22
53
翻译 第二章:Java中的多线程
Android 应用程序应该是多线程的,以提高单处理器和多处理器平台上的性能。线程可以在单个处理器上共享执行,也可以在多个处理器可用时利用真正的并发。性能的增加是以增加复杂性为代价的,并且有责任保护线程之间共享的资源并保持数据一致性。
2024-11-24 22:27:21
37
1
翻译 第一章:Android组件和多任务处理需求
Android应用程序在Dalvik运行时中的Linux操作系统上运行,该运行时包含在Linux进程中。Android应用了一个进程排名系统,该系统对每个正在运行的应用程序的重要性进行优先级排序,以确保只有优先级最低的应用程序才会被终止。若要提高性能,应用程序应将操作拆分到多个线程中,以便代码可以并发执行。每个Linux进程都包含一个负责更新UI的特定线程。所有长操作都应远离UI线程并在其他线程上执行。
2024-11-24 01:45:43
67
转载 手机里面的AP与BP
高通的芯片里面又分AP、BP, AP与BP分别表示什么?AP:Application Processor,即应用芯片BP:Baseband Processor,即基带芯片双核,四核,八核主要指的是 AP 部分;原来,FCC(美国联邦通信委员会)认证要求将AP和BP分开,因为射频控制相关的功能(信号调制、编码、射频位移等)都是高度的时间相关的,最好能将这些函数放在一个CPU核上运行,...
2019-04-25 17:28:32
2650
原创 移动硬盘错误检查与快速修复方法
几个月前买了台某云设备,并且将自己的移动硬盘挂上去了。1,可以发挥旧设备的余热;2,还可以随时查看硬盘上的数据信息;3,还可以远程备份手机端的信息到硬盘上;就这么愉快的使用了近两个月后,不幸的事发生了;远程硬盘打不开,回家把移动硬盘挂到电脑上也识别不了,提示要格式化,选择了否之后又提示“无法访问,文件或目录损坏且无法读取”。OMG! 晴天霹雳啊接下来就是磁盘数据恢复之旅了;...
2018-09-09 16:39:37
17606
3
转载 eclipse报错:'<>' operator is not allowed for source level below 1.7
报错:'这是eclipse的编译环境与项目的要求不对应造成的,这个错误一般是导入别的项目才出现的。解决:右键项目-->Properties-->Java Compiler-->勾选Enable project specific settings--Compiler compliance level-->选择1.7-->OK转载自:http://bbs.csdn.ne
2017-03-15 10:20:56
7303
原创 error: failed to load 'image-marlin-nof26v.zip': Not enough space
在用fastboot刷Nexus系列或者Pixel系统手机原生系统时,经常会碰到 error: failed to load 'image-marlin-nof26v.zip': Not enough space 这种错误;这个错误经常会给我们造成误导,以为是手机系统空间不够,其实不是,这个是fastboot工具的一个bug,google已经在最新的版本上解决了些问题;25.0.3 (De
2017-02-28 23:27:31
3605
原创 eclipse运行出错org.eclipse.swt.SWTError: No more handles
网上搜索过有很多解决办法并不正确,有的说要删除配置文件,有的说ADT版本不对,但无一解决问题。后面还是自己摸索发现与别的软件有冲突!eclipse错误原因:如下错误原因是与别的软件有冲突导致的。我这里是与ADBlock这个广告过滤软件冲突了。这个软件是通过百度助手下载的,另外我把百度助手也卸载了,也有流氓嫌疑;由于该问题是100%复现,也可以在问题发生进挨个kill一遍进程,就大概知道
2016-10-29 16:46:03
11566
原创 电脑不能通过adb 连接手机的解决办法
电脑不能通过adb 连接手机1,现象:电脑不能通过adb 连接手机,换数据线不行,重启手机不行,重启电脑也不行,但是别的手机可以顺利连上,这台手机在别的电脑上也可以顺利连上。2,解决办法:打开 D:\google\usb_driver\android_winusb.info 文件,找到标签 [Google.NTamd64] ,在其最后一栏添加一个设备
2016-07-19 21:52:29
12053
原创 简单几步解决 svchost 占用资源过高的问题
简单几步解决svchost占用内存过高问题:svchost.exe一段时间内占用的CPU飚升到25%,电脑一直在嗡嗡叫。后面查了一下主要是Windows Update占用的资源过高导致。1,在我的电脑上点击鼠标右键,选择【管理】2,选择右侧【服务和应用程序】下的【服务】选项3,找到名为Windows Update服务,双击4,选择启动类型为手动,服务状态为已停止5,点应
2016-04-30 09:40:17
42077
2
转载 linux环境下git 生成 patch 与 打patch
转载自:http://blog.youkuaiyun.com/liuxd3000/article/details/257980651,下载代码git clone git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-next-2.6.gitcd bluetooth-next-2.62,修改代码vi
2016-04-26 21:31:50
2604
原创 The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 1, found: 0 Pager id: com
2016-03-30 15:04:42
1878
原创 针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension解决方法
针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension by calling setMeasuredDimension()的解决办法: versionName = 2.5.2 versionCode = 20002100java.lang.IllegalStateExcepti
2016-03-30 12:07:35
13943
2
原创 python解析xml示例
python是一种脚本语言,功能非常强大我们来看看如何使用python来解析xml,举个粟子:例1:解析xml 1 2008 141100 4 2011 59900
2016-03-21 22:18:02
8183
原创 ConditionVariable在Android应用开发中的用法
首先来看下ConditionVariable类的定义:C:\Program Files\Android\android-sdk\platforms\android-21\android.jarpackage android.os;public class ConditionVariable{ private volatile boolean mConditio
2016-03-09 22:24:17
1612
原创 笔记本电脑连接蓝牙耳机设备
1, 添加设备选择找到的蓝牙设备,譬如SBH702, 选择服务勾选耳机服务,应用,确定 3, 安装驱动A, Bluetooth外围设备驱动B, Bluetooth AVC, Bluetooth Headset通常情况下Bluetooth外围设备驱动无法安装成功,不过这并不要紧;仍然会提示成功将此设备添加到电脑。4,Bluetoo
2016-03-06 23:39:40
4814
1
原创 Android单元测试创建步骤
单元测试创建步骤:1,创建一个AndroidProject,包名为com.junit.example,类名MainActivity。这个app只实现一个简单功能:即点击按钮之后,TextView的内容由Hello变为Hello Android。2,在src目录下添加一个测试包,包名为com.junit.example.test,类名为MainActivityTest。该类中
2016-02-20 11:07:52
1409
原创 uiAutoMator 自动化测试创建步骤
uiAutoMator 自动化测试创建步骤:1,Android SDK Manager 中下载 Android Support Repository 相关类文件;2,创建 java 工程,编写黑盒测试用例;这里需要通过 UI AutoMator View 工具来解析该应用程序界面的UI元素;在 android-sdk/tools 目录下面;官网相关介绍可以看这里:htt
2016-01-06 22:33:40
1824
原创 eclipse 使用问题,按F3或者ctrl+click事件时,“current text selection cannot be opened in an editor”
众所周知,eclipse 在查看代码时,可以很方便使用 F3 或者 Ctrl+click 可以快速跳转到你想要看的那个函数或者变量;但我在使用的时候碰到了问题。当前类的变量或者函数可以快速跳转过去,但是跨类调用却跳转不了,此时状态栏弹出提示:“current text selection cannot be opened in an editor”。上网查到了一些解决方法:方法一:简单
2015-11-24 11:37:54
12373
3
转载 Java应用程序中的内存泄漏及内存管理
Java平台的一个突出的特性是自动内存管理。很多人把这种特性误读为Java没有内存泄露。然而,在我印象中,现代Java框架以及基于Java的平台并非如此。特别是Android平台,能举出很多反例。为了让大家对Java平台的内存泄露有一个初步的认识,我们先来看一个Java实现的栈:class SimpleStack { private final Object[] objectPoo
2015-11-15 16:06:29
1328
原创 关于 Android 源码
关于 android 源码下载,由于众所周知的原因,我们无法访问到 https://source.android.com/source/downloading.html 下载到android源码现在国内也有镜像了 https://aosp.tuna.tsinghua.edu.cn/,可以通过此网站下载。如果是为了下载编译,可以按照 https://mirrors.tuna.tsingh
2015-11-01 15:42:58
823
原创 Camera中对焦模式总结
1,相机对焦模式有以下几种:auto //自动infinity //无穷远macro //微距continuous-picture //持续对焦fixed //固定焦距2,常见对焦模式切换场景2.1,单拍时,会先对焦再拍照,再切换到CAF; 有一个从 af 切换到 caf 过程2.2,连拍时,会先对焦再拍照,连拍完成,再切换到 CAF;
2015-11-01 14:26:47
24316
转载 Android 文件操作,删除,拷贝文件等
android删除文件操作方法: /** * 删除文件夹以及目录下的文件 * @param filePath 被删除目录的文件路径 * @return 目录删除成功返回true,否则返回false */ public boolean deleteDirectory(String filePath) { boolean fla
2015-09-20 00:22:17
7538
转载 android 中View SurfaceView SurfaceTexture 的区别
Android SurfaceView 与 View 的区别:http://bbs.51cto.com/thread-965972-1.html 如果你的游戏不吃CPU,用View就比较好,符合标准Android操作方式,由系统决定刷新surface的时机。 但如果很不幸的,你做不到不让你的程序吃CPU,你就只好使用SurfaceView来强制刷新surface了,不然系统的
2015-09-20 00:16:09
8211
原创 android应用内获取系统权限,来设置一些系统开关
1,需要在 Android.mk 文件内添加属性LOCAL_CERTIFICATE := platformLOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAG
2015-09-16 09:48:28
2402
转载 android apk编译时可以找到的资源,但在运行时却找不到出错Resources$NotFoundException
转载自:http://www.devdiv.com/home.php?mod=space&uid=258059&do=blog&id=11973在android开发中会用一些资源,这些资源以不同形式存在,比如说图片,xml等,android为这些不同类型的资源统一编号,生成资源类R 。如下: java代码:public final class R {public stati
2015-09-10 18:07:58
8232
转载 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
转载自:http://www.blogjava.net/rosen/archive/2010/06/13/323522.html前言 在 使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。 一开始不得不说
2015-07-07 17:33:08
1120
android_protips_advanced_topics_for_expert_android_app_developers.pdf
2013-05-25
ffmpeg-git-8475ec1-win32-static.7z
2013-05-25
odmlff2-avidef.pdf
2013-05-25
ISO_IEC_14496-14_2003-11-15.pdf
2013-05-25
MP3文件结构解析
2013-05-25
android 九格图原理 9.png_2.doc
2012-08-06
Handler使用相关的三个实例
2012-07-18
Shell编程.do
2012-07-10
Dalvik虚拟机简介.doc
2012-07-10
跟我一起写Makefile.pdf
2012-07-10
编程修养,什么是好的程序员
2011-09-15
Google C++编程风格指南
2011-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人