Android学习笔记---Service

Service是Android四大组件之一,它适合于执行长时间的任务,例如长时间的网络任务,播放音乐,文件I/O等.

Service的一些基本知识

若要创建一个Service必须继承于系统提供的Service类,并复写Service的一些回调方法.下列是一些重要的回调方法:

  1. onStartCommand()
    此方法会在Service被其他组件通过startService()方法启动时调用.一旦此方法此方法执行后,Service便可在后台无限期的运行.如果实现了此方法,当Service的任务完成时,应该通过stopSelf()stopService()方法停止Service.
  2. onBind()
    当其他组件通过bindService()绑定Service时会调用此方法.此方法是必须要实现的,必须提供一个对外的接口(IBinder)让用户与Service进行交互,但如果不想对Service进行绑定可以在此方法返回null.
  3. onCreate()
    Service第一次创建时会调用此方法.可以在此方法执行一次性的设置工作,当Service已经运行,此方法不会再被调用.
  4. onDestroy()
    Service不再使用并被销毁时会调用此方法.应该在此方法进行资源的回收.

    Read More

Android学习笔记---Activity

通常我们创建一个Android项目的时候,IDE工具通常都会帮我们生成一个默认的MainActivity和它的布局文件.它就是本次的主角–Activity.

Activity是Android的四大基本组件之一,基本的App开发根本离不开它.而要掌握Activity的基本用法,只要熟悉和理解Activity的生命周期就可以了.

Activity的生命周期

先来张熟悉的图片:
Activity的生命周期

Read More

Java学习笔记---Annotation

下面的代码片段相信有过Android开发经验的朋友都会非常的熟悉.

1
2
3
4
5
 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

其中OnCreate()方法前的@Override便是今天的主角,没错它就是Java的注解Annotation.

什么是Annotation

简单的说注解就是给Java代码标上标签,让Java虚拟机知道该如何处理被标注的代码.

Read More

浅谈Java设计模式系列0x0B---观察者模式

之前我给大家介绍了对象创建型结构型的设计模,式接下来我会为大家介绍行为型的设计模式;
给大家介绍的第一个的行为型设计模式就是观察者模式;

观察者是什么鬼

其实就像在生活中,当你想买一样商品的时候,因为价格太贵,所有你并没有马上入手.但你却会关注它的价格变化,当商品的价格下降的时候,你就会收到通知,并且决定入手;
上面的例子就是一个观察者模式的例子,你就是观察者,商品就是观察目标,当商品的状态发生变化时,观察者会得到通知并做出相应的动作;

模式结构

  • 目标(Subject):被观察的对象,定义了一个观察者的集合,提供增加和删除观察者对象的方法,同时定义了通知方法;
  • 具体目标(ConcreteSubject):目标类的子类,实现目标类中定义的抽象业务逻辑方法;
  • 观察者(Observer):对观察目标的改变做出反应,声明更新数据的接口方法;
  • 具体观察者(ConcreteObserver):维护一个指向具体目标对象的引用,实现观察者接口的更新数据方法,可以调用具体目标类的 attach() 方法将自己添加到目标类的集合中或通过 detach() 方法将自己从目标类的集合中删除;

Read More

浅谈Java设计模式系列0x0A---代理模式

浅谈Java设计模式系列0x06—适配器模式
浅谈Java设计模式系列0x07—桥接模式
浅谈Java设计模式系列0x08—装饰器模式
浅谈Java设计模式系列0x09—外观模式

上次我给大家介绍了外观模式,它提供了高层的统一接口,使得子系统的使用更加的容易;
本次我给大家介绍的同样也是一种结构型的设计模式—-代理模式;

代理是什么鬼

其实代理比较好理解,就像我们不想到实体店买东西,我们就通过上网,在网上商店购买商品;
我们下单后,网上的代购网站就会帮我们代购商品,购买商品的是代购网站,这个代购网站就是代理了;
代理模式(Proxy Pattern) : 给某一个对象提供一个代理,并由代理对象控制原对象的引用;

模式结构

  • 抽象主题角色(Subject):它声明了真实主题代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题,客户端通常需要针对抽象主题角色进行编程;
  • 代理主题角色(Proxy):用来代理和封装真实主题;
  • 真实主题角色(RealSubject):它定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业务操作,客户端可以通过代理主题角色间接调用真实主题角色中定义的操作;

    Read More