Android服务机制详解

Android 服务的功能挺实用的,尤其在那些不需要界面的后台任务时,表现还蛮稳的。服务不像 Activity 那样依赖用户操作,它更像是“后台小能手”,在你看不见的地方默默干活,挺适合搞下载、音乐播放这种活儿。

服务的生命周期也比较清晰:创建、启动、销毁三个阶段。比如你用startService()启动服务,它就会进到onStartCommand()执行任务。如果是bindService(),那服务还能和前端 Activity 交互,绑定完毕还能传数据。

代码示例部分也挺好懂的。下面这个MyService类,直接实现了onCreate()onStartCommand()onDestroy(),你一眼就能看出生命周期的执行顺序。

public class MyService extends Service {
  @Override
  public IBinder onBind(Intent intent) {
    return null;
  }

@Override public void onCreate() { Log.d("MyService", "onCreate"); super.onCreate(); }

@Override public void onDestroy() { Log.d("MyService", "onDestroy"); super.onDestroy(); }

@Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d("MyService", "onStartCommand"); return START_STICKY; } }

AlarmManager这种时间服务也挺常见的,比如你想在某个时间点触发事件,配合服务一起用效果不错。还有getSystemService()这种调用系统服务的方式,做位置、通知之类的功能也方便。

如果你项目里要搞进程间通信,那就得看看AIDL服务了。虽然写起来比普通服务复杂点,但一旦搭好,多个 App 之间共享数据就不成问题。

如果你在做耗时任务、长连接或音视频服务,Android 服务绝对值得一试。哦对了,别忘了在AndroidManifest.xml里注册服务,不然跑不起来。

doc 文件大小:842.5KB