service和IntentService
IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,不会阻塞应用程序的主线程
http://blog.csdn.net/zhf198909/article/details/6906786
IntentService onHandleIntent((Intent)msg.obj)中调用你的处理程序.处理完后即会停止自己的服务
http://android.blog.51cto.com/268543/528166
“客户端”如果想获得“服务器端”的“数据”,必须用AIDL,在Service端的onBind()中返回AIDL对象,在 客户端的onServiceConnected中获取这个返回的AIDL对象,然后就可以通过这个AIDL对象调用它的被实现了的抽象方法,通过这个抽象方法获取Service端的数据。
http://www.cnblogs.com/snowdrop/articles/2319686.html
Service有两种类型:
- 本地服务(Local Service):用于应用程序内部 (1.服务和activity之间没有调用交互 :通过startService和stopService启动关闭服务的 2.Activity 与 Service传递数据和调用接口,通过bindService(new Intent("com.easymorse.CountService"), this.serviceConnection, BIND_AUTO_CREATE)启动unbindService(serviceConnection)关闭)
- 远程服务(Remote Sercie):用于android系统内部的应用程序之间
本地服务不支持onBind(),它从onBind()返回null,这种类型的服务只能由承载服务的应用程序组件访问。可以调用 startService()来调用本地服务。AIDL服务可以同时供 同一进程内的组件和其他应用程序的组件使用。这种类型的服务在AIDL 文件中为自身与其客户端定义一个契约。服务实现 AIDL契约,而客户端绑定到 AIDL定义。服务通过从 onBind()方法 返回AIDL接口的实现,来实现契约。客户端通过调用 bindService()来绑定到AIDL服务,并调用 unBindService()来从服务断开。
http://marshal.easymorse.com/archives/1564
Widget List
RemoteViewsService
http://developer.android.com/reference/android/widget/RemoteViewsService.html
@Override
publicint onStartCommand(Intent intent,int flags,int startId){
handleCommand(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
使用Memory Analyzer tool(MAT)分析内存泄漏(二)
http://www.blogjava.net/rosen/archive/2010/06/13/323522.html
理解Heap Profling名词-Shallow和Retained Sizes
http://kenwublog.com/understand-shallow-and-retained-size-in-hprofling
声明static变量,要充分考虑到对Object的“生命周期”影响
http://www.javatutorialhub.com/java-static-variable-methods.html