Android开发之Service初步

一、什么是Service
Service是Android系统提供的一个应用程序组件。Service与Activity组件类似,不过Service没有图形用户界面。Service通常用来处理一些耗时比较长的操作。Service在后台一直运行,可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等等。
需要注意的是Service不是一个单独的进程也不是一个线程,而是主线程的一部分。
二、Service的使用
    自定义一个类继承自android.app.Service包中的Service类。复写Service类中的以下几个方法
1.public IBinder onBind(Intent arg0) 将一个Service和一个Activity绑定
2.public void onCreate() 创建一个Service对象时调用
3.public int onStartCommand(Intent intent, int flags, int startId) 当启动或者重新启动对象时调用
4.public void onDestroy() 销毁一个Service对象时调用
    Service需要在AndroidManifest.xml注册文件中注册
        <service android:name=".FirstService"></service>
示例:新建一个Android应用层,在main.xml中添加两个按钮:buttonStart和buttonStop,点击之后分别可以启动和停止Service。
    源代码:
    main.xml
    
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button 
	android:text="startService" 
	android:id="@+id/buttonStart" 
	android:layout_width="200dp" 
	android:layout_height="wrap_content">
</Button>
<Button 
	android:text="stopService" 
	android:id="@+id/buttonStop" 
	android:layout_width="200dp" 
	android:layout_height="wrap_content">
</Button>
</LinearLayout>


    Android_Service.java
    
package idea.org;

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 Android_Service extends Activity {
	private Button buttonStart=null;
	private Button buttonStop=null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        buttonStart=(Button)findViewById(R.id.buttonStart);
        buttonStop=(Button)findViewById(R.id.buttonStop);
        buttonStart.setOnClickListener(new StartClickListener());
        buttonStop.setOnClickListener(new StopClickListener());
    }
    class StartClickListener implements OnClickListener
    {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent=new Intent();
			intent.setClass(Android_Service.this,FirstService.class);
			startService(intent);
		}
    	
    }
    class StopClickListener implements OnClickListener
    {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Intent intent=new Intent();
			intent.setClass(Android_Service.this,FirstService.class);
			stopService(intent);
		}
    	
    }
}


    FirstService.java
    
package idea.org;

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

public class FirstService extends Service
{

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		System.out.println("Service onBind");
		return null;
	}

	/* (non-Javadoc)
	 * @see android.app.Service#onCreate()
	 */
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		System.out.println("Service onCreate");
	}
/* (non-Javadoc)
	 * @see android.app.Service#onStartCommand(android.content.Intent, int, int)
	 */
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// TODO Auto-generated method stub
		System.out.println("flags---->"+flags);
		System.out.println("startId---->"+startId);
		System.out.println("Service onStartCommand");
		return START_NOT_STICKY;
	}
	
	/* (non-Javadoc)
	 * @see android.app.Service#onDestroy()
	 */
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		System.out.println("Service onDestroy");
	}

	
}


    AndroidManifest.xml
    
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="idea.org"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="11" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Android_Service"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <service android:name=".FirstService"></service>
    </application>
</manifest>


    界面:
    
    运行效果:
    点击startService按钮启动Service,先调用onCreate()方法载调用onStartCommand()方法。
    
    启动Service之后就在后台运行,所以在此点击startService按钮,只调用onStartCommand()方法,不再调用onCreate()方法。
    
    点击stopService按钮之后调用onDestroy()方法停止Service服务。
    
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android开发中,Service是一种在后台执行长时间运行操作的组件。通过Service,可以在不影响用户界面的情况下,执行一些耗时任务或后台运行的功能。 下面是一个Android开发中的Service示例: 我们创建一个音乐播放器的应用。我们需要一个Service来在后台播放音乐。 首先,在AndroidManifest.xml文件中注册Service: ``` <service android:name=".MusicService" /> ``` 然后,在MusicService类中,继承自Service,重写onCreate()、onStartCommand()和onDestroy()方法: ```java public class MusicService extends Service { private MediaPlayer mediaPlayer; @Override public void onCreate() { super.onCreate(); // 初始化MediaPlayer mediaPlayer = new MediaPlayer(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // 获取音乐文件的路径 String musicPath = intent.getStringExtra("musicPath"); try { // 设置音乐文件的路径给MediaPlayer mediaPlayer.setDataSource(musicPath); mediaPlayer.prepare(); // 开始播放音乐 mediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); } // START_STICKY表示Service被强制停止后自动重启 return START_STICKY; } @Override public void onDestroy() { super.onDestroy(); // 停止并释放MediaPlayer资源 mediaPlayer.stop(); mediaPlayer.release(); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } } ``` 在MainActivity中,我们可以通过启动Service来播放音乐: ```java public class MainActivity extends AppCompatActivity { private Button playButton; private Intent serviceIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); playButton = findViewById(R.id.play_button); serviceIntent = new Intent(this, MusicService.class); playButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 设置音乐文件的路径给Service serviceIntent.putExtra("musicPath", "path_to_music_file"); // 启动Service startService(serviceIntent); } }); } @Override protected void onDestroy() { super.onDestroy(); // 停止Service stopService(serviceIntent); } } ``` 以上就是一个简单的Android开发中的Service示例,通过这个示例,可以在后台播放音乐,并且不影响用户界面的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值