android关于service()

MainActivity:
package com.example.myservice1;
import com.example.myservice1.Myservice.MyBinder;
import android.os.Bundle;
import android.os.IBinder;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
@SuppressLint("ShowToast")
public class MainActivity extends Activity implements OnClickListener,ServiceConnection{
    private Button start,stop,bind,unbind,get;
     private Intent intent;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        start=(Button) findViewById(R.id.start);
        stop=(Button) findViewById(R.id.stop);
        bind=(Button) findViewById(R.id.bind);
        unbind=(Button) findViewById(R.id.unbind);
        get=(Button) findViewById(R.id.get);
        start.setOnClickListener(this);
        stop.setOnClickListener(this);
        bind.setOnClickListener(this);
        unbind.setOnClickListener(this);
        get.setOnClickListener(this);
        intent=new Intent(MainActivity.this,Myservice.class);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }    
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.start:
            startService(intent);            
            break;
        case R.id.stop:
            stopService(intent);
            break;
        case R.id.bind:
            bindService(intent, this, BIND_AUTO_CREATE);
            break;
        case R.id.unbind:
            unbindService(this);
            break;
        case R.id.get:
            Toast.makeText(MainActivity.this,
                    "当前Service的值为:" + my.getIndex(), Toast.LENGTH_LONG).show();
            break;            
        default:
            break;
        }
        
        
    }
    private Myservice my;
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {        
        System.out.println("onServiceConnected");
        Myservice.MyBinder m=(MyBinder) service;
        my=m.getMyService();        
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {                
    }

}



Myservice:
package com.example.myservice1;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;

public class Myservice extends Service {

    private Timer timer;
    private TimerTask task;
    private int index = 0;

    // 与Activicy进行绑定
    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }
    //得到binder对象
    private MyBinder binder = new MyBinder();

    //自定义已给MyBinder继承Binder实现通信
    public class MyBinder extends Binder{
        //获得当前Service的状态
        public Myservice getMyService(){
            
            return Myservice.this;
        }
    }
    
    
    @Override
    public void onCreate() {
        super.onCreate();
        startTimer();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        stopTimer();
    }

    // 开始执行Timer
    public void startTimer() {
        timer = new Timer();
        task = new TimerTask() {

            @Override
            public void run() {
                index++;
                System.out.println(index);
            }
        };
        timer.schedule(task, 1000, 1000);
    }

    // 停止Timer的执行
    public void stopTimer() {
        timer.cancel();
    }
    //实现可读性(Index)
    public int getIndex() {
        return index;
    }
}
    
原文地址:https://www.cnblogs.com/shide/p/3034022.html