Androidの4大コンポーネントのサービス

3018 ワード

  • サービス紹介
  • サービスタイプ
  • サービス基本用法
  • サービスライフサイクル
  • サービス詳細
  • サービス紹介サービスは、Androidでプログラムのバックグラウンドで実行されるソリューションであり、ユーザーと対話する必要がなく、長期的に実行するタスクを実行するのに非常に適しています.サービスの実行は、任意のユーザーインタフェースに依存せず、プログラムがバックグラウンドに切り替えられたり、ユーザーが別のアプリケーションを開いたりしても、サービスは正常に動作します.ただし、サービスは独立したプロセスで実行されるのではなく、サービスの作成時に存在するアプリケーションプロセスに依存することに注意してください.アプリケーション・プロセスが殺されると、プロセスに依存するすべてのサービスが停止します.また、サービスはスレッドを自動的に開くのではなく、すべてのコードがデフォルトでプライマリスレッドで実行されます.サービス内でサブスレッドを手動で作成し、ここで具体的なタスクを実行する必要があります.
  • サービスタイプ使用範囲1.ローカル・サービス:アプリケーションの内部機能:Activityなどのアプリケーションが属するスレッドを占有するのではなく、単一のスレッドのバックグラウンドで実行するアプリケーション独自の時間のかかるタスクを実現します.使用:サービスでContextを呼び出すことができます.startServiceが起動し、Contextを呼び出す.stopService終了.内部でサービスを呼び出すことができます.stopSelfまたはServices.stopSelfResultは自分で止めます.startService()が何回呼び出されても、stopService()を1回呼び出すだけで停止します.

  • 2.リモートサービス(Remote Sercie):androidシステム内部のアプリケーション間の機能:天気予報サービスなどの他のアプリケーションに多重化され、他のアプリケーションはこのようなサービスを書く必要がなく、既存のものを呼び出すことができる.使用:インタフェースを定義し、他のアプリケーションが操作できるようにインタフェースを露出できます.クライアントは、サービスオブジェクトへの接続を確立し、その接続によってサービスを呼び出す.Contextを呼び出す.BindService()メソッドは接続を確立し、Contextを呼び出すために起動する.unbindService()は接続を閉じます.複数のクライアントは、同じサービスにバインドできます.サービスがまだロードされていない場合は、bindService()が先にロードされます.実行カテゴリ1.フロントサービスフロントサービスはstartForegroundまたはsetForegroundを呼び出してサービスをフロントサービスにする必要があり、フロントサービスを使用するとバックグラウンドでサービスが実行されるときにシステムkill 2になることを避けることができる.バックグラウンドサービスバックグラウンドサービスはバックグラウンドで実行されます.
  • サービス基本用法1.サービス
  • を定義
    public class MyService extends Service {
          @Ovierride
          public IBinder onBind(Intent intent) {
                return null;
          }
    }
    

    1つのサービスは、onCreat、onStartCommand、onDestroyの3つの方法で最もよく使用されます.onCreateはサービス作成時に呼び出され、onStartCommandメソッドはサービス起動時に呼び出され、onDestroyはサービス破棄時に呼び出されます.2.サービスにはリストファイルAndroidManfestが必要です.xmlで登録してから有効になります
  • サービスライフサイクルサービスは、自分で起動することはできません.ContextオブジェクトからstartServiceまたはbindServiceメソッドを呼び出すことでのみ起動できます.1)startServices:ServiceはonCreate->onStartを経験します.onCreateは1回のみ呼び出され、onstartは複数回呼び出される可能性があります.stopService:onDestroyを呼び出します.呼び出し元がstopServiceを呼び出さずに直接終了すると、サービスはバックグラウンドで実行されます.このサービスの呼び出し元は、起動後にstopServiceを呼び出してサービスを閉じることができます.2)bindServices:ServiceはonCreate->onBindを経験し、onBindはクライアントにIBindインタフェースインスタンスを返します.呼び出し元とサービスが結合され、Contextが終了すると、サービスはonUnbind->onDestroyを呼び出します.マルチバインディング不可3)サービスのオン・オフのたびにonStartのみが複数回呼び出され(複数回startServiceで呼び出されます)、その他のonCreate,onBind,onUnbind,onDestoryは1ライフサイクルで1回しか呼び出されません4)BroadcastReceiverはstartServiceでのみサービスを起動できます.ブロードキャスト自体のライフサイクルが短いためbindでは意味がありません
  • サービス詳細1.サービスは基本的にバックグラウンドで実行され、優先度が低い.メモリ不足の場合はサービスを回収します.フロントサービスを利用して回収を避けることができます.フロントサービスでは、通知の効果と同様に、システムステータスバーにドロップダウンステータスバーを表示すると、常に実行中のアイコンが表示されます.InentServiceを使用します.onHandleIntentメソッドではスレッドで実行されており,プログラム異常の問題ANRを心配する必要はない.無パラメトリック構造の良い本を提供し、その内部で親クラスのパラメトリック構造関数
  • を呼び出さなければならない.
    public class MyIntentService extents IntentService {
           public MyIntentService() {
                super("MyIntentService");
           }
           @Override
           public void onHandleIntent(Intent intent) {
           
           }
    }