服務會在其託管程序的主執行緒中執行 —
服務不會建立自己的執行緒且不會在另外的程序中執行 (除非您另行指定)。 如果您的服務即將從事任何 CPU 密集的作業或封鎖操作 (如播放 MP3 或連線網路),您應該在服務中建立新的執行緒來執行這些工作。 透過使用另外的執行緒,您會降低應用程式不回應 (ANR) 錯誤的風險,且應用程式的主執行緒仍可以專務於使用者與您的 Activity 互動。
1. Create a Service
public class EchoService extends Service { public EchoService() { } @Override public void onDestroy() { super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onCreate() { super.onCreate(); } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } }
2.At activity A start A service
Intent intent = new Intent(this,EchoService.class); startService(intent);
when you call startService(intent);, will execute onCreate and onStartCommand method. However, will you call again startService, only onStartCommand will execute again.
when onStartCommand finish ,the Service object still here
3.Stop the service
In the service :
stopSelf()
outside the Service:
stopService()
after call these method, OnDestroy() will call