博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
启动和停止Service
阅读量:6323 次
发布时间:2019-06-22

本文共 2485 字,大约阅读时间需要 8 分钟。

activity_main

MainActivity

package com.example.android_service;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.os.Build;public class MainActivity extends Activity {	private Button stop,start;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                start=(Button)this.findViewById(R.id.start);        stop=(Button)this.findViewById(R.id.stop);        final Intent intent=new Intent();        intent.setAction("dashu.test.service");        start.setOnClickListener(new View.OnClickListener() {						@Override			public void onClick(View arg0) {				// TODO Auto-generated method stub				startService(intent);			}		});        stop.setOnClickListener(new View.OnClickListener() {						@Override			public void onClick(View v) {				// TODO Auto-generated method stub				stopService(intent);			}		});    }}

MyService

package com.example.android_service;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.util.Log;public class MyService extends Service {	private final static String TAG = "dashu";	@Override	public IBinder onBind(Intent arg0) {		// TODO Auto-generated method stub		return null;	}	// Service创建时候回调	@Override	public void onCreate() {		// TODO Auto-generated method stub		super.onCreate();		Log.d(TAG, "-->服务创建");	}	//服务启动时候回调	@Override	public int onStartCommand(Intent intent, int flags, int startId) {		// TODO Auto-generated method stub		Log.d(TAG, "-->服务启动");		return super.onStartCommand(intent, flags, startId);		}	//服务关闭时候回调	@Override	public void onDestroy() {		// TODO Auto-generated method stub		super.onDestroy();		Log.d(TAG, "-->服务关闭");	}}

 

使用context.startService() 启动Service是会会经历:

context.startService()  ->onCreate()- >onStart()->Service running
context.stopService() | ->onDestroy() ->Service stop 
 
假设Service还没有执行,则android先调用onCreate()然后调用onStart();假设Service已经执行,则仅仅调用onStart()。所以一个Service的onStart方法可能会反复调用多次。 
 
stopService的时候直接onDestroy,假设是调用者自己直接退出而没有调用stopService的话,Service会一直在后台执行。该Service的调用者再启动起来后能够通过stopService关闭Service。
 
所以调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy

你可能感兴趣的文章
C# 取两个集合的交集\并集\差集
查看>>
EJB的生命周期,及如何管理事务?
查看>>
怎么去用java经典递归算法?
查看>>
tf.Variable
查看>>
GBDT-梯度提升树
查看>>
for 穷举
查看>>
单例模式的使用场景
查看>>
SftpUtil FTP文件上传
查看>>
UVA10815 Andy's First Dictionary
查看>>
Ext程序规划入门
查看>>
springboot集成swagger文档
查看>>
box-shadow
查看>>
实验3密码破解技术
查看>>
java面试题汇总(有的题无视即可,没什么实际用途)
查看>>
跨浏览器的事件对象
查看>>
ssh连接不上vmware虚拟机centos7.5
查看>>
知其所以然~mongodb副本集
查看>>
基础才是重中之重~泛型类的静态构造方法可不是只执行一次呀
查看>>
初涉算法——STL初步
查看>>
浏览器缓存机制浅析
查看>>