Android Service简介(系列1)

Android Service是Android重要的组件,在开发中会有用到和涉及。本文先给出一个最简单的Android Service例子。
(第1步)写一个类继承自Service,假设这个类的名字叫做MyAppService.java,重点是完成两个方法:
Service的onCreate和onStartCommand方法。
onCreate仅仅在Service第一次被startService时候初始化操作一次,随后不管再怎么startService,都不会再onCreate了。
耗时的、后台的、不需要用户交互的操作放在onStartCommand里面处理。需要强调一点,Android的Service并不是一个单独的进程、线程空间,是和Android主线程共享进程空间,这就意味,不要在onStartCommand方法里面阻塞主线程,否则将造成ANR!如果在onStartCommand里面有耗时操作,那么务必将onStartCommand里面的耗时操作代码块放到线程里面做。(注意!次说仅仅针对Service,IntentService和Service机制不同,不存在此问题,但有其自身特点,后面文章再说。)
Service的onDestroy只会被调用一次,那就是Service被stopService或者stopSelf时候。

完整的MyAppService.java代码:

package zhangphil.service;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.util.Log;public class MyAppService extends Service {// 仅仅create一次@Overridepublic void onCreate() {Log.d(this.getClass().getName(), "onCreate");}// 在这里处理耗时、后台、无需用户交互的‘重口味’操作。@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.d(this.getClass().getName(), "hello,service!");return super.onStartCommand(intent, flags, startId);}@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onDestroy() {Log.d(this.getClass().getName(), "onDestroy");}}


(第2步)在AndroidManifest.xml定义第1步写的Service,在本例中是MyAppService,如代码:

 <application...        <service android:name="zhangphil.service.MyAppService" />        ...</application>



(第3步)接下来就可以在自己的activity中通过startService和stopService启动、停止Service了,如代码所示:

Intent intent=new Intent(activity,MyAppService.class);activity.startService(intent);...Intent intent=new Intent(activity,MyAppService.class);activity.stopService(intent);


更多相关文章

  1. android中实现view的更新UI有两组方法的问题
  2. Android 通过蓝牙控制小车源代码+视频
  3. Android之怎么操作文件(读写以及保存到sdcard)
  4. Could not find SDK_Root\tools\adb.exe 的解决方法
  5. Android高手进阶教程(八)-------Android中两种设置全屏的方法!!!
  6. Android Studio导入.so库文件方法

随机推荐

  1. Cetos 7 配置LAMP的解决办法
  2. 超赞,20个炫酷的数据可视化大屏(含源码)
  3. 安利 5 个拍案叫绝的 Matplotlib 骚操作!
  4. C语言学习心得(七)
  5. pandas100个骚操作:JSON自动解析为DataFra
  6. 这个可视化分析库,让你轻松玩转数据科学!
  7. k8s交付服务总结
  8. Android(安卓)蓝牙开发:第一日
  9. TFTP不能传输大于32MB的文件?
  10. 年轻人不讲武德,竟用Python让马老师表演闪