2010年4月11日 星期日

啟動或關閉本地服務應用程式


在Android的框架中,Activity扮演著手機的操控程序,它是前景執行的程式,若在某些場合中,不需要人機介面,而是希望在背景下執行,這時我們就需要利用Service。底下為利用Activity來啟動或關閉本地服務範例的步驟:

1. 首先建立一個新的專案,繼承Acticity建立LocalServiceController類別。

2. 建立兩個按鈕,其id分別為start和stop。

3. 撰寫這兩個按鈕的事件處理程序,分別呼叫startService及stopService來啟動LocalService的服務程式。
package com.example.localservice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class LocalServiceController extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button startbutton = (Button) findViewById(R.id.start);
startbutton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startService(new Intent(LocalServiceController.this, LocalService.class));
}

});
Button stopbutton = (Button) findViewById(R.id.stop);
stopbutton.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(new Intent(LocalServiceController.this, LocalService.class));

}

});
}
}
4. 繼承Service類別建立並撰寫LocalService類別。
package com.example.localservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;

public class LocalService extends Service {


@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(this, "service created", Toast.LENGTH_SHORT).show();
}

@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "service stoped", Toast.LENGTH_SHORT).show();
}

@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Toast.makeText(this, "service started", Toast.LENGTH_SHORT).show();

}

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(this, "service binded", Toast.LENGTH_SHORT).show(); return null;
}

}
5. 利用Toast物件來顯示資料。
Toast.makeText(this, "service created", Toast.LENGTH_SHORT).show();

6. 務必記得在AndroidManifest.xml中增加Local Service服務。


7. 執行程式並觀察訊息顯示的順序,瞭解服務啟動及關閉會呼叫那些程式。



注意並沒有呼叫Bind

沒有留言:

張貼留言