標籤:cli tag bre todo ring err blog ret pre
在Service的onStartCommand()中調用stopself()後並不會立馬destroy掉service,而是等onStartCommand()運行完才destroy。
public class TestService extends Service {private String TAG = "TestService";@Overridepublic void onCreate() {// TODO Auto-generated method stubLog.i(TAG, "onCreate");super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubLog.i(TAG, "onStartCommand");stopSelf();Log.i(TAG, "我還在運行!");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubLog.i(TAG, "onDestroy");super.onDestroy();}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}}
MainActivity用一個button來啟動service:
@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.testBtn:Intent intent = new Intent(this,TestService.class);startService(intent);break;default:break;}}
列印結果:
另外須要注意的是。多次調用stopSelf()不會拋出異常。
【android】在Service的onStartCommand()中調用stopself()應該注意的問題