初学Android 创建 启动 停止Service 五十八

Posted swdhywhd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学Android 创建 启动 停止Service 五十八相关的知识,希望对你有一定的参考价值。

Service跟Windows系统里的服务概念差不多,都在后台执行,它跟Activity的最大区别就是,它是无界面

开发Service与开发Activity的步骤类似

1.定义一个继承Service的子类

2.在androidManifest.xml文件中配置该Service

Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources(),getContentResolver()等方法

下面写一个简单的Service例子

先定义一个Service类

 

package WangLi.IO.FirstService;

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

public class FirstService extends Service {
    //必须实现的方法
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}

	//Service被创建时回调方法
	public void OnCreate()
	{
		super.onCreate();
		System.out.print("Service is Created");
	}
	
	//Service启动时回调该方法
	public int onStartCommand(Intent intent,int flags,int startId)
	{
		System.out.println("Service is Started");
		return START_STICKY;
	}
	
	//Service被关闭之前被回调
	public void onDestroy()
	{
		super.onDestroy();
		System.out.println("Service is Destroyed");
	}
}

上面几个关键方法都可以看到,Service的执行就在方法内写上相应的功能代码,在不同阶段执行

 

Service跟Activity一样,也需要在AndroidManifest.xml文件中注册,注册配置配置<intent-filter.../>子元素,设置Service可被哪些Intent启动

 

        <service android:name="FirstService" >
            <intent-filter>
                <action android:name="WangLi.IO.First_Service"></action>
            </intent-filter>
        </service>

建一个界面类Activity,放上两个按钮,一个用来启动Service,一个用来停止Service

 

 

package WangLi.IO.FirstService;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	Button start, stop;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获取界面上的start,stop两个按钮
		start = (Button) findViewById(R.id.start);
		stop = (Button) findViewById(R.id.stop);
		// 创建启动Service的Intent
		final Intent intent = new Intent();
		// 为Intent设置Action属性
		intent.setAction("WangLi.IO.First_Service");
		start.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				// 启动指定Service
				startService(intent);
			}
		});
		stop.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 停止指定Service
				stopService(intent);
			}
		});
	}
}

注意startService,和stopService这两个方法

 

下面是程序界面

技术分享图片

下面logcat记录的Service启动和关闭过程

技术分享图片

此外,有一点值得注意,多次启动一个已有的Service组件将不会再调用onCreate方法,但每次启动时都会回调onStart方法

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow




以上是关于初学Android 创建 启动 停止Service 五十八的主要内容,如果未能解决你的问题,请参考以下文章

Android之Service

如何让android的service一直在后台运行

Android Service 详解四:开始停止service

Android Service的有关总结

Android查缺补漏--Service和IntentService

Android基础:Service —— 默默为你服务