服务的作用:运行一些耗时操作,接收服务端消息之后进行处理,并发的执行一些动作。
服务基础: 创建服务;启动服务;销毁服务。
public class MyService extends Service {
public static final String TAG = "MyService";
//
@Override
public IBinder onBind(Intent intent) {
return null;
}
//服务第一次创建调用该方法
@Override
public void onCreate() {
super.onCreate();
Log.w(TAG, "in onCreate");
}
//开始服务时
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.w(TAG, "in onStartCommand");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.w(TAG, "in onDestroy");
}
}
这里的onBind是Service基类的抽象类,下面再说,其它三个方法就是服务的三个步骤。
1.上面是第一步 定义一个自己的服务类
2.所有安卓组件都必须在Manifest.xml中注册 服务也不例外
<service android:enabled="true" android:name=".MyService" />
3.启动与停止服务
startService(serviceIntent); stopService(serviceIntent);
当运行startService(serviceIntent) 之后就会依次调用上面提到的三个方法,然而当按Home键,华为Pad会关闭当前程序时,后台是没有服务的,小米的不会关闭,但如果按菜单键,上划关闭应用,则不会调用Service的onDestroy()方法。而一直点返回是不会关闭应用程序的,程序会在后台运行。
(其实这里很容易让人懵逼,都说服务是放在后台运行的,可为什么应用程序被杀掉之后,服务也停止了呢?
服务有没有停止是通过android手机的设置界面——>更多应用——>找到相应的app名称,你会发现微信和QQ的都有两个进程和服务,但是它们的软件通过上述方法被关闭之后,进程和服务都是存活的,然后我们自己的程序和服务却被关闭了,网上有很多帖子,讲的一个思路,却没有可行的方法与代码做参考,很心累!!!!导致我不想继续写服务相关的知识)