大家好,好久不見,今天在開發中遇到的一個問題給大家分享一下,我先前做了一個音樂播放器,因為播放音樂一般都是用服務來處理的。
當使用者點擊播放按鈕時,音樂在服務中播放,然後用使用者退出程式(服務進程還在,音樂還繼續),所以妥使用者點再次進入應用時,我們播放器要處於播放狀態,這裡我作了簡單的處理,判斷這個音樂服務是否開啟來完成的。
今天給大家的小例子是列出Android裝置中所有啟動的服務,及判斷某個服務是否開啟,具體步驟如下了:
第一步:建立一個Android工程,命名為RunningService。
第二步:修改RunningService.java代碼如下:
package com.tutor.runningservice;<br />import java.util.List;<br />import android.app.Activity;<br />import android.app.ActivityManager;<br />import android.os.Bundle;<br />import android.widget.TextView;<br />public class RunningService extends Activity {<br /> /** Called when the activity is first created. */<br /> @Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> //setContentView(R.layout.main);<br /> TextView mTextView = new TextView(this);<br /> ActivityManager mActivityManager =<br /> (ActivityManager)getSystemService(ACTIVITY_SERVICE);</p><p> List<ActivityManager.RunningServiceInfo> mServiceList = mActivityManager.getRunningServices(30);<br /> //我要判斷的服務名字,我在launcher2裡加了一個音樂服務<br /> final String musicClassName = "com.android.launcher2.MusicService";</p><p> boolean b = MusicServiceIsStart(mServiceList, musicClassName);</p><p> mTextView.setText("你要判斷的服務狀態為: " +b+"/n" + getServiceClassName(mServiceList));<br /> setContentView(mTextView);<br /> }<br /> //通過Service的類名來判斷是否啟動某個服務<br /> private boolean MusicServiceIsStart(List<ActivityManager.RunningServiceInfo> mServiceList,String className){</p><p> for(int i = 0; i < mServiceList.size(); i ++){<br /> if(className.equals(mServiceList.get(i).service.getClassName())){<br /> return true;<br /> }<br /> }<br /> return false;<br /> }<br /> //擷取所有啟動的服務的類名<br /> private String getServiceClassName(List<ActivityManager.RunningServiceInfo> mServiceList){<br /> String res = "";<br /> for(int i = 0; i < mServiceList.size(); i ++){<br /> res+=mServiceList.get(i).service.getClassName()+ " /n";<br /> }</p><p> return res;<br /> }<br />}
第三步:運行上述工程,查看效果!
不看不知道,一看嚇一跳,乖乖,開了這麼多服務,難怪手機很快就沒電了。
上面的一些服務好多是系統內建的,並且不可見的,我們可以到Settings->Applications->Running services查看
一共才看到十來個服務。
OK,今天就這麼多,呵呵,繼續上班中..............