美文网首页
使用Service

使用Service

作者: csp | 来源:发表于2017-03-03 16:43 被阅读8次

    在后台,做一些事物的处理,socket,长链接,推送的长链接等,需要用到service。
    创建Service:
    public class MyService extends Service {

    private boolean serviceRunning = false;
    public MyService() {
    }
    
    @Override
    public IBinder onBind(Intent intent) {
        return new Binder();
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    //onStartCommand在外界执行了startService的时候会执行。
    
        new Thread(){
            @Override
            public void run() {
                super.run();
                while (true){
                    System.out.println("服务正在运行。。。。。");
    
                    try{
                        sleep(1000);
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }
                }
    
            }
        }.start();
        System.out.println("onStartCommand");
    
        return super.onStartCommand(intent, flags, startId);
    }
       //Service的生命周期,一个onCreate和一个onDestroy。
    @Override
    public void onCreate() {
        super.onCreate();
    
        System.out.println("Service Create");
        serviceRunning = true;
        new Thread(){
            @Override
            public void run() {
                super.run();
                while (serviceRunning){
                    System.out.println("服务正在运行。。。。。");
    
                    try{
                        sleep(1000);
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }
                }
    
            }
        }.start();
    }
    
    @Override
    public void onDestroy() {
        super.onDestroy();
        System.out.println("Service Destroy");
        serviceRunning = false;
    }
    

    }
    在MainActivity中对Service进行操作:
    public class MainActivity extends AppCompatActivity implements View.OnClickListener, ServiceConnection {

    private Intent intent;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        intent = new Intent(MainActivity.this,MyService.class);
        findViewById(R.id.btnStartService).setOnClickListener(this);
        findViewById(R.id.btnStopService).setOnClickListener(this);
        findViewById(R.id.btnBindService).setOnClickListener(this);
        findViewById(R.id.btnUnbindService).setOnClickListener(this);
        //多个事件监听器,可以让Class实现onClickListener接口,这样写起来更直观简洁。
    }
    
    
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnStartService:
                startService(intent);
                break;
            case R.id.btnStopService:
                stopService(intent);
                break;
            case R.id.btnBindService:
                bindService(intent,this, Context.BIND_AUTO_CREATE);
                break;
            case R.id.btnUnbindService:
                unbindService(this);
                break;
    
        }
    
    }
    
    //使用BindService的时候需要实现ServiceConnection,以下两个方法。
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        System.out.println("Service Connected");
    }
    
    @Override
    public void onServiceDisconnected(ComponentName name) {
    
    }
    

    }
    也可以使用绑定服务的方式来启动服务。bindService和unBindService就可以用来绑定和解绑服务。
    如果同时启动和绑定服务,如果要停止,就需要同时停止和解绑服务。
    当你在某一个Activity里面绑定了服务,当你退出这个Activity的时候就会destroy这个服务。

    相关文章

      网友评论

          本文标题:使用Service

          本文链接:https://www.haomeiwen.com/subject/jhfrgttx.html