Android的Service学习

来源:互联网 发布:db2数据库删除 linux 编辑:程序博客网 时间:2024/05/17 08:38

1:Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。你可以在服务中开一一个线程,在线程中做耗时动作。

2:一个服务不是一个单独的进程。服务对象本身并不意味着它是在自己的进程中运行,除非另有规定,否则它与运行程序在同一个进程中。

3:一个服务不是一个单独的线程,他是一种手段,本身做着主线程的工作(以避免应用没有响应的错误)。

4:service使用的时候要在AndroidMainFest.xml文件里面声明。

5:使用Service

public class MusicService extends Service {private static final String TAG = "MyService";private MediaPlayer mediaPlayer;@Overridepublic IBinder onBind(Intent arg0) {return null;}@Overridepublic void onCreate() {Log.v(TAG, "onCreate");Toast.makeText(this, "show media player", Toast.LENGTH_SHORT).show();if (mediaPlayer == null) {mediaPlayer = MediaPlayer.create(this, R.raw.tmp);mediaPlayer.setLooping(false);}}@Overridepublic void onDestroy() {Log.v(TAG, "onDestroy");Toast.makeText(this, "stop media player", Toast.LENGTH_SHORT);if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.release();}}@Overridepublic void onStart(Intent intent, int startId) {Log.v(TAG, "onStart");if (intent != null) {Bundle bundle = intent.getExtras();if (bundle != null) {int op = bundle.getInt("op");switch (op) {case 1:play();break;case 2:stop();break;case 3:pause();break;}}}}public void play() {if (!mediaPlayer.isPlaying()) {mediaPlayer.start();}}public void pause() {if (mediaPlayer != null && mediaPlayer.isPlaying()) {mediaPlayer.pause();}}public void stop() {if (mediaPlayer != null) {mediaPlayer.stop();try {mediaPlayer.prepare();} catch (IOException ex) {ex.printStackTrace();}}}}
AndroidMainFest.xml文件里面添加Service

        <service            android:name=".service.MusicService"            android:enabled="true" >            <intent-filter>                <action android:name="com.homer.service.musicService" />            </intent-filter>        </service>


0 0
原创粉丝点击