DEMO1:当我们点击启动服务时和点击停止服务的时候,观察服务的运行状态,布局由于简单,只是两个普通的Button按钮,在此我只上截图。
java代码部分
第一步:我们需要实现一个服务类,继承自service,并实现其中的一些方法:这里我在每个方法里,打印出调用方法的名称。
package com.example.service; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; import android.widget.Button; public class MyService extends Service { public static final String TAG = "MYSERVICE"; @Override public IBinder onBind(Intent arg0) { Log.i(TAG, "MyService-->onBind"); return null; } @Override public void onCreate() { Log.i(TAG, "MyService-->onCreate"); super.onCreate(); } @Override public void onDestroy() { Log.i(TAG, "MyService-->onDestroy"); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "MyService-->onStartCommand"); return super.onStartCommand(intent, flags, startId); } }
第二步:activity 的主页面代码
package com.example.servicedemo; import com.example.service.MyService; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button btnStartSrv,btnStopSrv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnStartSrv = (Button)findViewById(R.id.btnStartSrv); btnStopSrv = (Button)findViewById(R.id.btnStopSrv); btnStartSrv.setOnClickListener(this); btnStopSrv.setOnClickListener(this); } @Override public void onClick(View view) { Intent service = new Intent(this, MyService.class); switch(view.getId()) { case R.id.btnStartSrv: { //启动服务 startService(service); break; } case R.id.btnStopSrv: { //停止服务 stopService(service); break; } default: break; } } }
点击启动按钮,
onCreate,onStartCommand 方法依次被调用。
点击关闭服务按钮,
onDestroy 方法被调用。 如果当服务运行时,我们继续点击启动服务的时候,我们会发现,只有onStartCommand方法被调用,onCreate没有。
这说明了当服务在启动以后,如果在想启动该服务,service不会重新创建,只会调用onStartCommand.
下一节,我们将对service 做一个简单的实用例子。
转载请注明http://www.cnblogs.com/yushengbo,否则将追究版权责任!