- 博客(31)
- 收藏
- 关注
转载 java并发编程
简介引入多线程的原因提高资源利用率,提升系统吞吐量公平性简化开发工作使用多线程的优势提高多CPU利用率方便建模简化对异步事件的处理改善传统GUI使用“主事件循环”带来的响应慢问题,现代GUI使用事件分发线程使用多线程带来的问题安全性问题活跃性问题性能问题在应用程序之外的线程中调用应用程序代码的例子Timer (使任务在稍后时刻运行或者
2016-09-02 17:30:23 526
转载 浅谈Service
直译过来,Service 就是服务。它跟 Activity 不同,没有界面,不直接与用户进行交互,是一个可以在后台长时间运行的应用组件。服务可以由其他应用组件来启动,也可以由系统来启动。当用户从你的应用切换到其他应用后,我们的服务仍然可以在后台继续运行,甚至有些情况下,你退出了应用,服务仍能继续运行。最典型的例子就是音乐播放器了,当你退出应用后,音乐还能继续播放。又比如钉钉和微信,只要你没有在系统
2016-08-10 15:59:55 1034
转载 android handler使用
Handler:是一个消息分发对象,进行发送和处理消息,并且其 Runnable 对象与一个线程的 MessageQueue 关联。作用:调度消息,将一个任务切换到某个指定的线程中去执行。为什么需要 Handler?子线程不允许访问 UI假若子线程允许访问 UI,则在多线程并发访问情况下,会使得 UI 控件处于不可预期的状态。传统解决办法:加锁,但会使得UI访问逻辑变的复杂,其
2016-08-05 19:36:36 857
转载 Binder学习指南
Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。理解Binder对于理解整个Android系统有着非常重要的作用,Android系统的四大组件,AMS,PMS等系统服务无一不与Binder挂钩;如果对Binder不甚了解,那么就很难了解这些系统机制,从而仅仅浮游与
2016-07-20 17:57:00 415
转载 AsyncTask解析
虽说现在做网络请求有了Volley全家桶和OkHttp这样好用的库,但是在处理其他后台任务以及与UI交互上,还是需要用到AsyncTask。但是你真的了解AsyncTask吗?AsyncTask的实现几经修改,因此在不同版本的Android系统上表现各异;我相信,任何一个用户量上千万的产品绝对不会在代码里面使用系统原生的AsynTask,因为它蛋疼的兼容性以及极高的崩溃率实在让人不敢恭维。本文
2016-07-20 17:55:26 334
转载 Android Studio你不知道的快捷键
一般来说键盘用的越多鼠标用的越少,那么写起代码来效率就越高;常见的快捷键想必大家都已经掌握,接下来我就分享一些你可能不知道的但确非常实用的快捷键。下文所有快捷键基于如下keymapWindows: DefaultLinux: DefaultOSX: Mac OSX 10.5+自动补全的时候是Enter还是Tab?自动补全enter和tab区别在使用自动补
2016-07-20 17:01:08 858
转载 Android Studio调试技巧
写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluate Expression, 知道条件断点;可是你听说过日志断点吗,Method Breakpoint, Exception Breakpoint 呢?还有高大上的 Field Watchpoint ?几种不同的断点你有关
2016-07-20 16:55:04 326
转载 插件之ContentProvider的管理
与Activity,BroadcastReceiver等频繁被使用的组件不同,我们接触和使用ContentProvider的机会要少得多;但是,ContentProvider这个组件对于Android系统有着特别重要的作用——作为一种极其方便的数据共享的手段,ContentProvider使得广大第三方App能够在壁垒森严的系统中自由呼吸。在Android系统中,每一个应用程序都有自己的用户I
2016-07-19 18:10:28 702
转载 插件之广播管理
相比Activity,BroadcastReceiver要简单很多——广播的生命周期相当简单;如果希望插件能够支持广播,这意味着什么?回想一下我们日常开发的时候是如何使用BroadcastReceiver的:注册, 发送和接收;因此,要实现BroadcastReceiver的插件化就这三种操作提供支持;接下来我们将一步步完成这个过程。阅读本文之前,可以先clone一份 understand
2016-07-19 18:07:12 583
转载 【转载】JAVA知识点(下)
这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring MVC等。此外,这篇文章还对企业应用架构、大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助。126、什么是ORM? 答:对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模
2016-07-19 18:01:12 1296
转载 【转载】JAVA知识点(中)
这部分主要是与Java Web和Web Service相关的知识。96、阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。补充:Sun Microsy
2016-07-19 17:59:54 894
转载 【转载】JAVA知识点(上)
1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的
2016-07-19 17:58:37 842
转载 android 插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中;通常
2016-07-18 19:00:47 694
转载 android 插件Activity生命周期管理
在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然也可以使用动态加载技术,但是仅仅把类加载进来就足够了吗?Activity,Service等组件是有生命周期的,它们统一由系统服务AMS管理;使用ClassLoader可以从插件中创建Activity对象,但是,一个没有生命周期的Activity对象有什么用?所
2016-07-18 18:59:20 1001
转载 Hook机制之AMS&PMS
在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook;插件框架通过AOP实现了插件使用和开发的透明性。在讲述DroidPlugin如何实现四大组件的插件化之前,有必要说明一下它对ActivityManagerServiche以及PackageManagerService的Hook方式(以下简称AMS,PMS)。ActivityManagerSer
2016-07-18 18:47:28 1939
转载 Android Hook机制之Binder Hook
Android系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。插件框架作为各个插件的管理者,为了使得插件能够无缝地使用这些系统服务,自然会对这些系统服务做出一定的改造(Hook),使得插件的开发
2016-07-18 18:45:53 574
转载 Android 插件之Hook机制动态代理
代理是什么为什么需要代理呢?其实这个代理与日常生活中的“代理”,“中介”差不多;比如你想海淘买东西,总不可能亲自飞到国外去购物吧,这时候我们使用第三方海淘服务比如惠惠购物助手等;同样拿购物为例,有时候第三方购物会有折扣比如当初的米折网,这时候我们可以少花点钱;当然有时候这个“代理”比较坑,坑我们的钱,坑我们的货。从这个例子可以看出来,代理可以实现方法增强,比如常用的日志,缓存等;也可以实现
2016-07-18 18:43:45 537
转载 android 构造匿名内部类
下面将分别按照 "什么是匿名内部类", "匿名内部类如何引起内存泄漏", "替代方案 -- 静态内部类", "替代方案 -- 动态代理" 四个部分来讲述,请耐心按顺序的读完.什么是匿名内部类匿名内部类,简单的说,就是没有明确指定名字的类。以下面的代码举例:public class MyActivity extends Activity { private int age
2016-07-18 18:26:11 662
转载 安卓VIEW的绘制过程
这篇文章是结合自己对安卓view源码的分析以及别人写的一些关于view的博文写的一点总结,希望能得到大牛的指正。 在View绘制之前我们首先看一下整个Android UI的结构,这是一张整体框架图: 首先获取一个WindowManagerService即Wms,然后通过会话传递到ViewRoot,ViewRoot是一个继承Handler的类,该类负责View的处理逻辑,然后作用
2016-07-15 18:50:34 567
原创 Activity生命周期
生命周期图3种状态1、Resumed(running):运行状态Activity在屏幕前台显示,并且有用户焦点,可以操作。2、Paused:暂停状态被其他的部分透明的或者没有占全部屏幕的Activity覆盖,但是这个Activity还是可见的,存活的,它保留着所有的状态和成员信息,但用户不能操作,也不能执行任何代码。3、Stopped:停止状
2016-07-15 18:49:42 336
转载 浅析Context
Context在我们实际开发中被广泛用到,比如 startActivity(…)/ getResources()/ getSharedPreferences(…)/getSystemService(.)等等;书中把Context理解为一个应用场景,一个Activity实例就是一个应用场景,一个Service实例也是一种应用场景,只是他木有前台界面而已;与Context相关类的继承关系如下:
2016-07-15 18:47:49 306
转载 Activity的创建过程分析
本文来自最近闲暇时查看android framework源码写的一篇文章,可能有错误之处,烦请各位大神指正。整个Activity的启动创建过程是通过ActivityThread完成的,首先看一下ActivityThread中的main方法:public static void main(String[] args) { SamplingProfilerIntegra
2016-07-15 18:46:13 624
转载 性能分析之内存优化
一,内存分析1,Java堆中各代的分布: 性能分析之内存 > image2016-5-22 14:11:43.png" src="http://doc.ucweb.local/download/attachments/236159046/image2016-5-22%2014%3A11%3A43.png?version=1&modificationDate=146389800700
2016-07-15 18:20:22 506
转载 Android进程保活
一,背景 Android系统在APP退出后台时系统并不会真正杀掉这个进程,而是将其缓存起来以方便下次能快速启用。在系统内存不足的情况下,系统会依据一套Low Memory Killer机制来杀进程。 Linux内核会为每一个进程分配一个值,如下,这个值代表进程的优先级,值越大,代表进程优先级越低,那么就越容易被回收,Low Memory Killer就是根据这套机制
2016-07-15 17:28:22 528
转载 app优化方法
APP核心价值肯定是在于业务的,因此我们传统上对于性能优化的态度都是有余力的时候来关注,哪怕在《Android应用性能优化》一书中也讲到“代码优化应该最后去做,甚至完全可能不用去做。”在这样的思路下,我们对性能问题的发现和解决都是严重滞后的。然而从另外一个角度来看,越来越多数据表明,应用的性能对用户留存和活跃度都有很大影响(具体可以参考 Why You Should Care about
2016-07-15 15:49:43 635
转载 binder浅析
众所周知Binder 是Android中的一种跨进程通信方式,从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager,WindowManager等等)和相应ManagerService的桥梁;从Android应用层来说,Binder是客户端和服务端进行通信的媒介,当是在不同的进程间通信时,服务端会返回一个bin
2016-07-15 15:43:53 363
转载 Android应用内存泄露分析、改善经验总结
原则 对于性能问题,分析和改善有必要遵循以下原则:一切看数据说话,不能跟着感觉走,感觉哪有问题就去改,很有可能会适得其反;性能优化是一个持续的过程,需要不断地改善,不要想着一气呵成;对于性能问题,不一定必须要改善,受限于架构或者其它原因某些问题可能会很难改善,必须要先保证能用,再才考虑好用。改善后一定要验证,任何一个地方的改动都需要验证,避免因为改善性能问
2016-07-08 14:55:41 693
转载 常见的导致 APP 内存泄漏的问题
原文:http://blog.nimbledroid.com/2016/05/23/memory-leaks-zh.html作者:Tom Huzij | Piasy 译今天的话题是内存泄漏,熟悉一些常见的内存泄漏案例,了解如何规避非常有意义,这也是最常问到的 Android 面试题之一。文章由 Android 性能优化专业团队 nimbledroid 原创,许建林(Piasy)
2016-05-30 11:11:22 622
转载 理解Java中HashMap的工作原理
Java中的HashMap使用散列来高效的查找和存储值。HashMap内部使用Map.Entry的形式来保存key和value, 使用put(key,value)方法存储值,使用get(key)方法查找值。理解hashCode()Java中的hashCode()方法,是顶层对象Object中的方法,因此Java中所有的对象都会带有hashCode()方法。
2016-05-28 21:52:54 1718 1
转载 Android 学习路线总结
转载请注明出处:http://blog.csdn.net/lowprofile_coding/article/details/51252781一、前言不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。最近看到很多Android新手
2016-05-27 16:14:36 536
转载 java 内存模型
Question:在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步?Answer:在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共享内存模型中,同步是显式的,程序员必须显式指定某个方法/
2016-05-27 16:11:37 274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人