大家晚上好,今晚讲的还是四大组件之一Service,它有两种方式实现全局服务与绑定服务,今天就先介绍全局服务,下次再奉上绑定服务。同样Service也是没有界面的,它主要运用在生命周期长的运用中,比如说:音乐播放器,下载与上传......,我这次是以简单的音乐播放器为例,为大家好好的介绍一下Service是一个怎样的东东。图如下。
布局很简单就不用说了,四个Button和一个TextVew组成,设置监听方法就行了。
1.BaseActivity.java
简单介绍一下这个是应用界面,可以这样理解,这是一个父类,其他子类可以调用其方法,可以省下很多多余的操作,代码流通性,可读性高。
public abstract class BaseActivity extends Activity {
private String tag = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
tag = getClass().getSimpleName();
initView();// 本类调用InitView方法
inteData();// 本类调用inteData方法
}
// 播放音乐 startPlay
public void startPlay(View v) {
Log.v(tag, "startPlay");
Toast.makeText(BaseActivity.this,"播放音乐", Toast.LENGTH_SHORT).show();
//意图实现跳转功能
Intent intent = new Intent(this, MusicService.class);
//附加附件,参数一:key值,参数二:values值
intent.putExtra(MusicService.CMD, MusicService.MUSICPLAY);
//开始服务
startService(intent);
}
// 暂停音乐
public void pausePlay(View v) {
Log.v(tag, "pausePlay");
Intent intent = new Intent(this, MusicService.class);
intent.putExtra(MusicService.CMD, MusicService.MUSICPPAUSE);
startService(intent);
}
// 停止音乐
public void stopPlay(View v) {
Log.v(tag, "stopPlay");
Intent intent = new Intent(this, MusicService.class);
intent.putExtra(MusicService.CMD, MusicService.MUSICSTOP);
startService(intent);
}
// 关闭服务
public void closeService(View v) {
Log.v(tag, "closeService");
//关闭服务stopService
Intent intent = new Intent(this, MusicService.class);
stopService(intent);
}
//定义抽象方法
public abstract void initView();
public abstract void inteData();
}
2.GameActivity.java
//继承父类方法
public class GameActivity extends BaseActivity {
//初始化组件
public void initView() {
//改变TextView文本
((TextView)findViewById(R.id.textView1)).setText("游戏界面");
}
//初始化数据
public void inteData() {
}
//菜单栏
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("设置界面");
return super.onCreateOptionsMenu(menu);
}
//菜单栏实现跳转
public boolean onOptionsItemSelected(MenuItem item) {
//跳转到SetActivity
Intent intent=new Intent(this,SetActivity.class);
startActivity(intent);
return super.onOptionsItemSelected(item);
}
}
3.SetActivity.java
//继承父类BaseActivity父类方法
public class SetActivity extends BaseActivity {
@Override
public void initView() {
//改变TextView文本值
((TextView)findViewById(R.id.textView1)).setText("设置界面");
}
@Override
public void inteData() {
}
}
4.MusicService.java
//新建MusicService继承Service子类,实现方法
public class MusicService extends Service {
//定义变量
public static final String TAG = "MusicService";
public static final String CMD = "cmd";
public static final int MUSICPLAY = 1;
public static final int MUSICPPAUSE = 2;
public static final int MUSICSTOP = 3;
//音频播放器定义
private MediaPlayer play;
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
//加载MP3格式的音频,放在在res/raw
play = MediaPlayer.create(this, R.raw.zhizhuo);
Log.v(TAG, "onCreate");
super.onCreate();
}
//开始命令,在这方法进行判断
public int onStartCommand(Intent intent, int flags, int startId) {
Log.v(TAG, "onStartCommand");
//获取传过来的key值,intent.getIntentExtra.
int cmd2 = intent.getIntExtra(CMD, 0);
//switch判断
switch (cmd2) {
//播放
case MUSICPLAY:
if (!play.isPlaying()) {
play.start();
}
break;
//暂停
case MUSICPPAUSE:
if (play.isPlaying()) {
play.pause();
}
break;
//停止
case MUSICSTOP:
if (play.isPlaying()) {
play.stop();
}
break;
default:
break;
}
return super.onStartCommand(intent, flags, startId);
}
//销毁
@Override
public void onDestroy() {
Log.v(TAG, "onDestroy");
super.onDestroy();
}
}
今晚就到这了,小编这两天累坏了,需要好好休息,明天好好上课,学到新的知识分享给大家。晚安。