android---(Service服务的基本用法)
2017-02-12 11:50
453 查看
Service是Android中四大组件之一,在Android开发中起到非常重要的作用,首选我们先来看一下官方对Service的定义:
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。
好了,老规矩,废话少说直接上代码,没毛病!!
首先写布局文件,用2个按钮来启动和停止服务
}
然后新建一个MyServices类并让它继承自Service,完成后的代码如下所示:
可以看到,这里我们又重写了onCreate(),onDestroy()和onStartCommand(Intent intent, int flags, int startId)这三个方法,它们是每个服务中最常用到的三个方法。其中onCreate方法会在服务创建的时候调用,onStartCommand方法会在每次服务启动的时候调用。onDestroy()方法会在服务销毁的时候调用。
通常情况下,如果我们希望服务一旦启动就立刻去执行某个动作,就可以将逻辑写在onStartCommand方法里。而当服务销毁时,我们又应该在onDestroy()方法中去回收那些不在使用的资源。
另外需要注意的是,服务都需要在AndroidManifest.xml文件中配置下。于是我们配置AndroidManifest.xml文件,代码如下所示:
完了之后MainActivity中代码:
上面我们在onCreate方法中分别获取到start service按钮和stop service按钮的实例,并给它们注册了点击
事件。然后在start service按钮的点击事件里面,我们构建出了一个Intent对象,并调用startService()
方法来启动MyService这个服务。在stop service按钮的点击事件里,我们同样构建出了一个Intent对象,并调用
stopService()方法来停止MyService这个服务。startService()和stopService()方法都是定义在Context
类中的,所以我们在活动里可以直接调用这两个方法。注意,这里完全是
9ff7
由活动来决定服务何时停止的,如果没有点击stop service
按钮,服务就会一直处于运行状态。那服务有什么办法让自己停下来了?只需要在MyService的任何一个位置调用shopSelf()
方法就能让服务停止下来了。
Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,所有这些活动都是在后台进行。
好了,老规矩,废话少说直接上代码,没毛病!!
首先写布局文件,用2个按钮来启动和停止服务
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.zking.services.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启动服务" android:onClick="start" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="结束服务" android:onClick="stop" /> </LinearLayout>
}
然后新建一个MyServices类并让它继承自Service,完成后的代码如下所示:
package com.zking.services; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.SystemClock; import android.support.annotation.Nullable; import android.util.Log; /** * Created by Administrator on 2017/2/12. */黑马霸霸 public class MyServices extends Service { @Nullable @Override public IBinder onBind(Intent intent) { Log.i("test", "onBind"); return null; } @Override public void onCreate() { super.onCreate(); Log.i("test", "onCreate"); } //ANR 应用程序未响应 //why:耗时操作写到了主线程 //服务和线程的区别--服务死不掉,线程可以死掉 @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("test", "onStartCommand"); //耗时操作 new Mythred().start(); return super.onStartCommand(intent, flags, startId); } class Mythred extends Thread { @Override public void run() { super.run(); for (int i = 0; i < 100; i++) { Log.i("test", "i=" + 1); SystemClock.sleep(1000); } //停止服务 stopSelf(); } } @Override public void onDestroy() { super.onDestroy(); Log.i("test", "onDestroy"); } }
可以看到,这里我们又重写了onCreate(),onDestroy()和onStartCommand(Intent intent, int flags, int startId)这三个方法,它们是每个服务中最常用到的三个方法。其中onCreate方法会在服务创建的时候调用,onStartCommand方法会在每次服务启动的时候调用。onDestroy()方法会在服务销毁的时候调用。
通常情况下,如果我们希望服务一旦启动就立刻去执行某个动作,就可以将逻辑写在onStartCommand方法里。而当服务销毁时,我们又应该在onDestroy()方法中去回收那些不在使用的资源。
另外需要注意的是,服务都需要在AndroidManifest.xml文件中配置下。于是我们配置AndroidManifest.xml文件,代码如下所示:
<service android:name=".MyServices" android:exported="true"> </service>
完了之后MainActivity中代码:
package com.zking.services; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent = new Intent(this, MyServices.class); } //启动服务的点击事件 public void start(View view) { startService(intent); } //结束服务的点击事件 public void stop(View view) { stopService(intent); }
上面我们在onCreate方法中分别获取到start service按钮和stop service按钮的实例,并给它们注册了点击
事件。然后在start service按钮的点击事件里面,我们构建出了一个Intent对象,并调用startService()
方法来启动MyService这个服务。在stop service按钮的点击事件里,我们同样构建出了一个Intent对象,并调用
stopService()方法来停止MyService这个服务。startService()和stopService()方法都是定义在Context
类中的,所以我们在活动里可以直接调用这两个方法。注意,这里完全是
9ff7
由活动来决定服务何时停止的,如果没有点击stop service
按钮,服务就会一直处于运行状态。那服务有什么办法让自己停下来了?只需要在MyService的任何一个位置调用shopSelf()
方法就能让服务停止下来了。
相关文章推荐
- 文章标题 android服务Service 的一些基本简介和用法
- Android Service 服务的基本用法
- Android Service(服务)详解·(二)Service基本用法
- android学习十八(Service服务的基本用法)
- Android之Service(二):服务的基本用法
- android 学习笔记 服务的基本用法
- Android四大基本组件(2)之Service 服务与Content Provider内容提供者
- android: 服务的基本用法
- Android中service基本用法,生命周期2
- Android Service的基本用法
- Service服务的基本用法
- Android四大组件之服务Service的用法
- Android 中Service 和Activity之间传值。(涉及BroadCast的基本用法)
- Android四个基本组件(2)之Service 服务与Content Provider内容提供商
- 服务Service的基本用法
- 关于Android Service的基本用法(下)(转)
- android中Service的基本用法和IntentService的使用
- Android - 位置定位(Location)服务(Service)类的基本操作
- Android中service基本用法,生命周期1
- Android_Service(1)基本用法