大家晚上好,今晚講的還是四大組件之一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();
}
}
今晚就到這了,小編這兩天累壞了,需要好好休息,明天好好上課,學到新的知識分享給大家。晚安。