day14Service

android四大组件之一 Service

Service 服务,一般在后台运行,没有界面

Service特点:

·在后台运行,不与用户交互,应用退出服务也不会停止。当应用进程停止时,服务才停止
·service运行在主线程中,执行耗时操作时,须在服务中开启子线程
·应用:播放音乐、后台下载大文件等

如何创建Service

1.自定义类继承Service
2.重写方法
3.清单文件注册

Service启动方式及生命周期

1.启动方式:onCreate—>onStartCommand()—>onDestory()
开启服务:startService()
停止服务:stopService()
2.绑定方式onCreate()—>onBinde()—>onUnbind()—>onDerstory()
绑定服务bindService()
解除绑定unbindService();
3.先启动后绑定(常用):onCreate() – onStartCommand() – onBind() — onUnbind() – onDestroy()

两种启动方式

start方式:一旦开启,长期后台运行,与Activity无关,不能调用服务里的放法
bind方式:如果开启者(Activity)退出了,服务也会跟着挂掉,可以通过binder调用服务里的方法

public class MyServer extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return new Mybinder();
    }
    class Mybinder extends Binder{
        public void play(){
            Toast.makeText(MyServer.this, "哈哈哈", Toast.LENGTH_SHORT).show();
        }
    }
}
public class MainActivity extends AppCompatActivity {

    Intent intent;
    Button btn1,btn2,btn3,btn4;
    //绑定时的连接
    ServiceConnection serviceConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            MyServer.Mybinder mybinder = (MyServer.Mybinder) service;//binder中介
            mybinder.play();//调用服务方法
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
            Toast.makeText(MainActivity.this, "绑定失败", Toast.LENGTH_SHORT).show();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = findViewById(R.id.btn_start);
        btn2 = findViewById(R.id.btn_end);
        btn3 = findViewById(R.id.btn_start1);
        btn4 = findViewById(R.id.btn_end1);
        intent = new Intent(MainActivity.this,MyServer.class) ;
        //开启
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startService(intent);
            }
        });
        //停止
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stopService(intent);
            }
        });
        //绑定
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bindService(intent,serviceConnection,BIND_AUTO_CREATE);
            }
        });
        //解除绑定
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                unbindService(serviceConnection);
            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值