content: /**
    * Copyright 2017 JessYan
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    *
    *      http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */
  package <%= appPackage %>.base;
  
  import android.app.Service;
  import android.content.Intent;
  import android.os.IBinder;
  import android.support.annotation.Nullable;
  
  import org.simple.eventbus.EventBus;
  
  import io.reactivex.disposables.CompositeDisposable;
  import io.reactivex.disposables.Disposable;
  
  /**
   * ================================================
   * 基类 {@link Service}
   * <p>
   * Created by jess on 2016/5/6.
   * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
   * <a href="https://github.com/JessYanCoding">Follow me</a>
   * ================================================
   */
  public abstract class BaseService extends Service {
      protected final String TAG = this.getClass().getSimpleName();
      protected CompositeDisposable mCompositeDisposable;
  
      @Nullable
      @Override
      public IBinder onBind(Intent intent) {
          return null;
      }
  
      @Override
      public void onCreate() {
          super.onCreate();
          EventBus.getDefault().register(this);
          init();
      }
  
      @Override
      public void onDestroy() {
          super.onDestroy();
          EventBus.getDefault().unregister(this);
          unDispose();//解除订阅
          this.mCompositeDisposable = null;
      }
  
      protected void addDispose(Disposable disposable) {
          if (mCompositeDisposable == null) {
              mCompositeDisposable = new CompositeDisposable();
          }
          mCompositeDisposable.add(disposable);//将所有subscription放入,集中处理
      }
  
      protected void unDispose() {
          if (mCompositeDisposable != null) {
              mCompositeDisposable.clear();//保证activity结束时取消所有正在执行的订阅
          }
      }
  
      /**
       * 初始化
       */
      abstract public void init();
  }
  