包括和使用者的互動以及想要完成的事,
那麼,為何還需要所謂的服務(Service)呢?
想像一下,你可能需要在背景播放音樂,
或者執行TCP/UDP等網路活動,
這些你當然也可以new thread背後去跑,
但...假如我們希望在Activity結束後,
這些服務仍然存在呢?
此時你就需要Service的機制...
建立一個Service只要幾個步驟:
首先,先create service class..
public class myService extends Service { private ServiceThread mServiceThread; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { mServiceThread = new ServiceThread(); mServiceThread.start(); return START_STICKY ; } @Override public void onDestroy() { Log.d(TAG,"onDestroy()"); if (mServiceThread != null) mServiceThread.interrupt(); } private class ServiceThread extends Thread { @Override public void run() { super.run(); //your action here } } }這裡new ServiceThread()是因為一般Service會需要一直執行某些動作,
如果你只需要簡單的處理一些事情,而且只要一次,
那把你要做的事寫在在onStartCommand()即可...
再來,Service必須在AndroidManifest.xml裡註冊才行
<service android:name="myPackageName.myService"> </service >如此就已建立Service了...
那如何調用呢?
假設你的Activity裡有一個按鈕,
按下按鈕後我們希望啓動剛剛的Service
public void onClick(View v) { Intent i = new Intent(this, myService.class); startService(i); }反過來,如果你想要停止這個Service呢?
public void onClick(View v) { Intent i = new Intent(this, myService.class); stopService(i); }如果要確定Service有沒有建立成功, 可以到應用程式管理員的"執行中"畫面找一下,看看有沒有剛剛建立的Service名字...
沒有留言:
張貼留言