- 一个服务不是一个单独的进程。服务对象本身并不意味着它是在自己的进程中运行,除非另有规定,否则它与运行程序是同在一个进程中。
- 一个服务不是一个单独的线程。它是一种手段,本身做着主线的工作 (以避免应用程序没有响应的错误)。
- 不同点:Activity是与用户交互的组件,即我们用眼睛可以看到的界面,而Service是在后台运行,执行隐藏的动作。
- 相同点:使用Activity 时我们需要在配置文件中声明<activity>标签,同样的使用Service 也需要在配置文件中声明<service>标签
- onCreate()
创建 - onStart()
开始 - onDestry()
释放
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class ServiceSample extends Service {
final String TAG="Service";
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG,"onBind");
return null;
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG, "onUnbind");
return super.onUnbind(intent);
}
@Override
public void onRebind(Intent intent) {
// TODO Auto-generated method stub
super.onRebind(intent);
Log.i(TAG, "onRebind");
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.i(TAG, "onCreate");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, "onDestroy");
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Log.i(TAG, "onStart");
}
}
-
1、若Servcie没有启动,则首先会调用该Service的onCreate方法,然后再调用onStart方法。
-
2、若Service己经启动则首先会直接调用onStart方法,
-
3、关闭时使用stopservice来关闭。
-
1、若Service没有启动,则首先调用onCreate方法,来初始化启动Service,然后调用Service的onBind。
-
2、通过onUnbind和onDestry方法停止Service运行。
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class musicServer extends Service {
private MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
if(player==null)
{
player=MediaPlayer.create(this, R.raw.start);
player.start();
}
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
player.stop();
}
}
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 musicActivity extends Activity{
private Intent intent=new Intent("com.terry.Android.MUSIC");
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.music);
findView();
viewHolder.myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startService(intent);
}
});
viewHolder.myButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(intent);
}
});
}
void findView(){
viewHolder.myButton=(Button)findViewById(R.id.play);
viewHolder.myButton2=(Button)findViewById(R.id.stop);
}
}