44.androidサービスサービスサービス-起動と停止
4137 ワード
Service
バックグラウンドで実行されるコンポーネントで、バックグラウンドで実行するのに適したコードを実行します.インタフェースのないactivityと見なすことができます.
プロセスの優先度:
1.Foreground process:フロントプロセス、
*ユーザと対話中のactivityを持つプロセスonResumeメソッドが呼び出されます.
*ユーザーと対話中のactivityにバインドされたサービスを持つプロセス
*フロントで実行中のサービス-サービスを持つstartforeground()が呼び出されます.
*次の3サイクルメソッドのいずれかを実行するサービス(onCreate()、onStart()、onDestroy()
*onReceiveメソッドを実行しているブロードキャスト受信者を持つプロセス
2.visible process:可視プロセス、
*フォーカスのないactivyが表示され、onPauseメソッドが呼び出されます.
*可視(またはフロント)activityにバインドされたサービスプロセス3を持つ.Service process:startServiceによって開始されたサービス・プロセス
4.background process:非表示のactivity(onStopメソッドが呼び出される)を持つバックグラウンドプロセス
5.Empty process:空のプロセス、アクティブなアプリケーションコンポーネントのないプロセス(activityは終了しました)
サービスのライフサイクル1.Context.を通じてstartService()起動サービス
onCreate()-->onStart()-->onDestroy()
onCreate()は、サービスの作成時に呼び出され、複数のstartService()が呼び出されると、onCreate()メソッドは一度だけ呼び出されます.
onStart()はstartService()呼び出しを開始すると呼び出され、複数回startService()が呼び出され、onStart()メソッドは複数回呼び出されます.
onDestroy()は、サービス終了時に呼び出されます.
2.Context経由bindService()起動サービス
onCreate()-->onBind()-->onUnbind()-->onDestroy()
onBind()は、サービスをバインドするときに呼び出され、bindService()が複数回呼び出されると、onBind()メソッドは1回のみ呼び出されます.
onUnbind()は、バインド解除時に呼び出されます.
サービスのオープンとクローズ
プロファイル:
activity_main.xml
MyService.java
MainActivity.java
バックグラウンドで実行されるコンポーネントで、バックグラウンドで実行するのに適したコードを実行します.インタフェースのないactivityと見なすことができます.
プロセスの優先度:
1.Foreground process:フロントプロセス、
*ユーザと対話中のactivityを持つプロセスonResumeメソッドが呼び出されます.
*ユーザーと対話中のactivityにバインドされたサービスを持つプロセス
*フロントで実行中のサービス-サービスを持つstartforeground()が呼び出されます.
*次の3サイクルメソッドのいずれかを実行するサービス(onCreate()、onStart()、onDestroy()
*onReceiveメソッドを実行しているブロードキャスト受信者を持つプロセス
2.visible process:可視プロセス、
*フォーカスのないactivyが表示され、onPauseメソッドが呼び出されます.
*可視(またはフロント)activityにバインドされたサービスプロセス3を持つ.Service process:startServiceによって開始されたサービス・プロセス
4.background process:非表示のactivity(onStopメソッドが呼び出される)を持つバックグラウンドプロセス
5.Empty process:空のプロセス、アクティブなアプリケーションコンポーネントのないプロセス(activityは終了しました)
サービスのライフサイクル1.Context.を通じてstartService()起動サービス
onCreate()-->onStart()-->onDestroy()
onCreate()は、サービスの作成時に呼び出され、複数のstartService()が呼び出されると、onCreate()メソッドは一度だけ呼び出されます.
onStart()はstartService()呼び出しを開始すると呼び出され、複数回startService()が呼び出され、onStart()メソッドは複数回呼び出されます.
onDestroy()は、サービス終了時に呼び出されます.
2.Context経由bindService()起動サービス
onCreate()-->onBind()-->onUnbind()-->onDestroy()
onBind()は、サービスをバインドするときに呼び出され、bindService()が複数回呼び出されると、onBind()メソッドは1回のみ呼び出されます.
onUnbind()は、バインド解除時に呼び出されます.
//
@Override
public void onCreate(){
super.onCreate();
System.out.println("onCreate ");
}
// , , , onStartCommand
@Override
public void onStart(Intent intent, int startId){
super.onStart(intent, startId);
System.out.println("onStart ");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
System.out.println("onStartCommand ");
return super.onStartCommand(intent, flags, startId);
}
//
@Override
public void onDestroy(){
super.onDestroy();
System.out.println("onDestroy ");
}
サービスのオープンとクローズ
プロファイル:
<service android:name="com.ldw.startService.MyService"></service>
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "
android:onClick="click"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "
android:onClick="click2"
/>
</LinearLayout>
MyService.java
package com.ldw.startService;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
MainActivity.java
package com.ldw.startService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
//
Intent intent = new Intent(this, MyService.class);
startService(intent);
}
public void click2(View v){
//
Intent intent = new Intent(this, MyService.class);
stopService(intent);
}
}