ローカルサービス
Content(activityなど)でstartService(Intent)を呼び出してサービスを起動すると、サービスはstopSelf()を呼び出すか、stopService()を呼び出すと停止します.
サービス起動時に自動的に呼び出されます
サービスクラス:
This is the base class for all services. When you extend this class, it's important that you create a new thread in which to do all the service's work, because the service uses your application's main thread, by default, which could slow the performance of any activity your application is running
IntentServiceクラス:
This is a subclass of
InentServiceクラスでは、次の作業を行います. Creates a default worker thread that executes all intents delivered to Creates a work queue that passes one intent at a time to your Stops the service after all start requests have been handled, so you never have to call Provides default implementation of Provides a default implementation of
したがって,onHandleIntent()関数と構造関数を実現するだけで,マルチスレッドの問題を考慮するよりも
他のコールバック関数を再ロードするとsuperを覚えます
サービス起動時に自動的に呼び出されます
onStartCommand(Intent intent, int flags, int startId)
サービスクラス:
This is the base class for all services. When you extend this class, it's important that you create a new thread in which to do all the service's work, because the service uses your application's main thread, by default, which could slow the performance of any activity your application is running
IntentServiceクラス:
This is a subclass of
Service
that uses a worker thread to handle all start requests, one at a time. This is the best option if you don't require that your service handle multiple requests simultaneously. All you need to do is implement onHandleIntent()
, which receives the intent for each start request so you can do the background work. InentServiceクラスでは、次の作業を行います.
onStartCommand()
separate from your application's main thread. onHandleIntent()
implementation, so you never have to worry about multi-threading. stopSelf()
. onBind()
that returns null. onStartCommand()
that sends the intent to the work queue and then to your onHandleIntent()
implementation したがって,onHandleIntent()関数と構造関数を実現するだけで,マルチスレッドの問題を考慮するよりも
public class HelloIntentService extends IntentService {
/**
* A constructor is required, and must call the super IntentService(String)
* constructor with a name for the worker thread.
*/
public HelloIntentService() {
super("HelloIntentService");
}
/**
* The IntentService calls this method from the default worker thread with
* the intent that started the service. When this method returns, IntentService
* stops the service, as appropriate.
*/
@Override
protected void onHandleIntent(Intent intent) {
// Normally we would do some work here, like download a file.
// For our sample, we just sleep for 5 seconds.
long endTime = System.currentTimeMillis() + 5*1000;
while (System.currentTimeMillis() < endTime) {
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
}
}
}
他のコールバック関数を再ロードするとsuperを覚えます
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent,flags,startId);
}