Android中Service的简单使用

先创建个类,继承于Service类,例如:
EchoService.java文件:

public class EchoService extends Service {
    @Override
    public IBinder onBind(Intent arg0) {
        System.out.println("onBind");
        return echoServiceBinder;
    }

//启动一个service时,先运行onCreate(),然后运行onBind(Intent),其中onBind(Intent)需要返回一个Binder对象实例,下面是构造一个实例

private final EchoServiceBinder echoServiceBinder = new EchoServiceBinder();
    public class EchoServiceBinder extends Binder{
        public EchoService getService(){
            return EchoService.this;
        }
    }
    public int getCurrentNum(){
        return i;
    }
    @Override
    public void onCreate() {
        System.out.println("onCreate");

        startTimer();

        super.onCreate();
    }

    @Override
    public void onDestroy() {
        System.out.println("onDestory");

        stopTimer();

        super.onDestroy();

    }

    private int i = 0;

    public void startTimer(){
        if (timer==null) {
            timer = new Timer();
            task = new TimerTask() {

                @Override
                public void run() {
                    i++;

                    System.out.println(i);
                }
            };

            timer.schedule(task, 1000, 1000);
        }
    }

    public void stopTimer(){
        if (timer!=null) {
            task.cancel();
            timer.cancel();

            task = null;
            timer = null;
        }
    }


    private Timer timer=null;
    private TimerTask task=null;
}

MainActivity.java文件:

public class MainActivity extends Activity implements OnClickListener, ServiceConnection {  //继承接口ServiceConnection,重写onServiceConnected()方法与service实现通信
    private Button btnStartService,btnStopService,btnBindService,btnUnbindService,btnGetCurrentNumber;
    private Intent serviceIntent;
    private EchoService echoService=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        serviceIntent = new Intent(this, EchoService.class);

        btnStartService = (Button) findViewById(R.id.btnStartService);
        btnStopService = (Button) findViewById(R.id.btnStopService);
        btnBindService = (Button) findViewById(R.id.btnBindService);
        btnUnbindService = (Button) findViewById(R.id.btnUnbindService);
        btnGetCurrentNumber = (Button) findViewById(R.id.btnGetCurrentNum);

        btnStartService.setOnClickListener(this);
        btnStopService.setOnClickListener(this);
        btnBindService.setOnClickListener(this);
        btnUnbindService.setOnClickListener(this);
        btnGetCurrentNumber.setOnClickListener(this);
    }

    @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.btnStartService:
            startService(serviceIntent);
            break;
        case R.id.btnStopService:
            stopService(serviceIntent);
            break;
        case R.id.btnBindService:
            bindService(serviceIntent, this, Context.BIND_AUTO_CREATE);
            break;
        case R.id.btnUnbindService:
            unbindService(this);
            echoService=null;
            break;
        case R.id.btnGetCurrentNum:
            if (echoService!=null) {
                System.out.println("service的信息"+echoService.getCurrentNum());//调用下面获取的echoService来访问其内部方法,达到获取service信息的目的
            }
            break;
        }
    }
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        System.out.println("onServiceConnected");
        echoService = ((EchoService.EchoServiceBinder)binder).getService();//获取service
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
    }

}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010106153/article/details/46820449
文章标签: android service
个人分类: Android
想对作者说点什么? 我来说一句

android_service2

2011年07月23日 100KB 下载

绑定本地service并与之通讯

2015年03月01日 2.48MB 下载

android中jni的简单使用

2015年08月29日 2.88MB 下载

AndroidService组件的使用

2013年10月20日 1.59MB 下载

SQLiteDemo

2014年06月11日 2.22MB 下载

Android 简单使用 HttpURLConnection

2017年07月31日 640KB 下载

没有更多推荐了,返回首页

不良信息举报

Android中Service的简单使用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭