包括和使用者的互動以及想要完成的事,
那麼,為何還需要所謂的服務(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名字...
沒有留言:
張貼留言