简单说明Service服务,使用Service

Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。
我们都知道Activity能呈现一个用户界面,于用户进行交互,而在很多时候,我们的程序不需要于用户进行交互的页面,只需要在后台一直运行着,做一些事物的处理,例如,一个service可能会处理网络操作,播放音乐,操作文件I/O或者与内容提供者(content provider)交互,Http的网络通信以及与服务器保持一个推送的连接,所有这些活动都是在后台进行。这个时候我们就可以用到Service。接下来我们就来试试如何使用Service

先创建一个项目:
创建一个项目

创建一个Service
这里写图片描述

创建成功后在activity_main.xml中,写两个按钮

<Button
    android:id="@+id/btn_startservice"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="启动service服务"/>

<Button
    android:id="@+id/btn_stopservice"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="停止service服务"/>

在MainActivity.calss 中

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

    setContentView(R.layout.activity_main);

    intent = new Intent(MainActivity.this,MyService.class);

    //点击启动service按钮
    findViewById(R.id.btn_startservice).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //启动服务
            startService(intent);
        }
    });

    findViewById(R.id.btn_stopservice).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //停止服务
            stopService(intent);
        }
    });
}

}

接下来我们运行项目
这里写图片描述

这个时候我们打开手机的“设置”,,然后找到“应用”,选择正在运行的应用,发现我们的应用并没有在其中

这里写图片描述

然后我们进入项目点击“启动Service服务”,然后再进入设置:
这里写图片描述

这个时候发现我们的项目正在运行

然后再次回到项目点击 “停止Service服务”,然后进入设置:
这里写图片描述

发现我们的项目又没了,,

通过这种方式我们可以把我们的程序运行在后台。

接下来我们进一步了解一下,,Service在后台怎么运行的,如何运行我们自己的代码。
我们让service在后台不断输出一个语句,来观察

在MyService类中重写一个方法,onStartCommand 这个方法在外界执行startService时就会执行。
然后在onStartCommand方法中写一个线程,来让它不断输出一个语句,每输出一句就休眠1秒钟。来看代码:

public class MyService extends Service {

public MyService() {

}

@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
}

//这个会在外界执行startService时,就会执行
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    new Thread(){
        @Override
        public void run() {
            super.run();
            while (true) {
                Log.e("service","服务正在运行...");
                try {
                    sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }.start();
    return super.onStartCommand(intent, flags, startId);
}

}

效果:

这里写图片描述

这种时候我们停掉Activity,退出项目服务也不会停止。

这就是服务,我们可以用它在后台执行耗时操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值