Service(服務)是 Android 應用程式提供的一個執行背景程式而不需與使用者互動的元件,Service 像 Activity 一樣,一個 Service 也有生命週期方法,可以執行監視它的狀態改變。但是比 Activity 的生命週期方法少,只有三個且它們是公有的(public)而不是受保護的(protected)。下面是一個例子程式,程式開始是由 Activity 呼叫 Service(服務),然後便會執行 Service 背景程式 onCreate → onStartCommand,完成後便會 onDestory 銷燬 Service。
Service 生命週期(Service Lifecycle)使用例子顯示 |
- 操作系統:Windows 7 64-bit 版本
- 開發環境:Android Studio 4.0.1 版本
- 原程式:C:\Development\Development_Android\Android_Project\DIY-Android-091-08 ServiceExample
- 程式:C:\Development\Development_Android\Android_Project\DIY-Android-091-08 ServiceExample
Activity 呼叫 Service(服務)程式範例:
import android.app.Activity; import android.content.Intent; import android.os.Bundle;
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(MainActivity.this, ServiceExample.class); startService(intent); } } |
Service(服務)程式範例:
import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log;
public class ServiceExample extends Service { private static final String TAG = "Android-Service"; private boolean isRunning = false;
@Override public void onCreate() { Log.i(TAG, "Service onCreate"); isRunning = true; }
@Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "Service onStartCommand"); new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 5; i++) { try { Thread.sleep(1000); } catch (Exception e) { } if(isRunning){ Log.i(TAG, "Service running ... "+i); } } stopSelf(); } }).start(); return Service.START_STICKY; }
@Override public IBinder onBind(Intent arg0) { Log.i(TAG, "Service onBind"); return null; }
@Override public void onDestroy() { Log.i(TAG, "Service onDestroy"); isRunning = false; } } |
設定 AndroidManifest.xml:
<service android:name=". ServiceExample" android:screenOrientation="portrait"> </service> |
沒有留言:
張貼留言