Android-服务Service(1)-介绍及startService调用

1. 前言

Service和Activity是类似的,不同点就是Service在后台操作,不与UI进行交互,不依赖于任何用户界面,比如启动服务播放音乐
尽管Service在后台运行,但它仍然运行在Main Thread中,因此不能用来做耗时的动作,那么只能在服务中开一个线程,用来做耗时动作

2. 开发步骤

1. 继承Service类

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");
    }
    public int onStartCommand(Intent intent,int flags,int startID){
        Toast.makeText(this,"Service Started",Toast.LENGTH_LONG).show();
        return  START_STICKY;
    }
    public  void onDestory(){
        super.onDestroy();
        Toast.makeText(this,"Service Destoryed",Toast.LENGTH_SHORT).show();
    }
}

2. 配置清单

在AndroidMainifest.xml里面配置该Service,当然在Android Studio里面可以自动配置了

    <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true"></service>

当然,如果希望本服务被其他的应用程序使用

<service android:name=".MyService">
       <intent-filter>
            <action android:name="net.learn2develop.MyService"/>
        </intent-filter>
 </service> 

3. 启动服务

启动服务可以通过调用Context.startService()或者Context.bindService()方法启动服务。

其中startService()方法启动服务,访问者与服务之间没有关联,即使访问者退出了,服务仍在运行。

而bindService()方法启动服务,那么访问者与服务绑定在一起,访问者退出后,服务也就终止了。

先说第一种startService方法:(第二种下篇)

 Intent intent=new Intent(getBaseContext(),MyService.class);
       //启动服务
 startService(intent);
       //停止服务
 stopService(intent);

3. 例子

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Intent intent=new Intent(getBaseContext(),MyService.class);
        Button btstart=(Button)findViewById(R.id.button1);
        Button btstop=(Button)findViewById(R.id.button2);
        btstart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //启动服务
                startService(intent);
            }
        });
        btstop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //停止服务
                stopService(intent);
            }
        });


    }
}

这里写图片描述
分别按下启动,启动,停止,启动服务时,logcat显示为

可以看到:
当首次启动服务,会执行onCreate()以及onStartCommand()函数
当服务以及被创建下再次启动服务,只会执行onStartCommand()函数
这里写图片描述

相关链接
Android-服务Service(1)-介绍及startService调用
Android-服务Service(2)-bind绑定Service及两种生命周期
Android-服务Service(3)-IntentService

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值