service是运行在后台的服务,你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。
接下来分析一下service 的生命周期:
1:actiivty_main.xml
<RelativeLayout 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"> <Button android:id="@+id/btn_bind_service" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Bind Service"/> <Button android:id="@+id/btn_stop_bind" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btn_bind_service" android:text="Stop Bind"/> <Button android:id="@+id/btn_start_service" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btn_stop_bind" android:text="Start Service"/> <Button android:id="@+id/btn_stop_service" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/btn_start_service" android:text="Stop Service"/> </RelativeLayout>
2:ServiceDemo.java
public class ServiceDemo extends Service{ private static final String TAG="ServiceDemo"; public static final String ACTION="com.yan.service.ServiceDemo"; @Override public IBinder onBind(Intent arg0) { Log.i(TAG, "onBind"); return null; } @Override public void onCreate() { Log.i(TAG,"onCreate"); super.onCreate(); } @Override @Deprecated public void onStart(Intent intent, int startId) { Log.i(TAG, "onStart"); super.onStart(intent, startId); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "onStartCommand"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { Log.i(TAG, "onDestroy"); super.onDestroy(); } @Override public boolean onUnbind(Intent intent) { Log.i(TAG, "onUnbind"); return super.onUnbind(intent); } }
3:MainActivity.java
public class MainActivity extends Activity { private Button btnBindService=null; private Button btnStopBind=null; private Button btnStartService=null; private Button btnStopService=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnBindService=(Button)findViewById(R.id.btn_bind_service); btnStopBind=(Button)findViewById(R.id.btn_stop_bind); btnStartService=(Button)findViewById(R.id.btn_start_service); btnStopService=(Button)findViewById(R.id.btn_stop_service); btnBindService.setOnClickListener(new OnClickListener(){ public void onClick(View view){ Intent intent=new Intent(ServiceDemo.ACTION); bindService(intent,sc,BIND_AUTO_CREATE); } }); btnStopBind.setOnClickListener(new OnClickListener(){ public void onClick(View view){ unbindService(sc); } }); btnStartService.setOnClickListener(new OnClickListener(){ public void onClick(View view){ Intent intent=new Intent(ServiceDemo.ACTION); startService(intent); } }); btnStopService.setOnClickListener(new OnClickListener(){ public void onClick(View view){ Intent intent=new Intent(ServiceDemo.ACTION); stopService(intent); } }); } ServiceConnection sc=new ServiceConnection(){ @Override public void onServiceConnected(ComponentName arg0, IBinder arg1) { Log.i("SC", "onServiceConnected"); } @Override public void onServiceDisconnected(ComponentName arg0) { Log.i("SC", "onServiceDisconnected"); } }; }
4:AndroidManifest.xml
<service android:name="com.yan.service.ServiceDemo"> <intent-filter> <action android:name="com.yan.service.ServiceDemo"/> </intent-filter> </service>
5:运行结果分析。
(1)点击StartService:
执行 onCreate()->onStartCommand()->onStart()
(2)点击StopService:
执行 onDestroy()
(3)点击BindService
执行 onCreate()->onBind()
(4)点击StopBind
执行 onUnbind()->onDestory()