package com.jparkie.aizoban.views.activities;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.jparkie.aizoban.BuildConfig;
import com.jparkie.aizoban.R;
import com.jparkie.aizoban.controllers.downloads.DownloadService;
import com.jparkie.aizoban.utils.PreferenceUtils;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observer;
import rx.Subscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class SplashActivity extends BaseActivity {
public static final String TAG = SplashActivity.class.getSimpleName();
private Subscription mRestartSubscription;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
mRestartSubscription = Observable
.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
try {
boolean isServiceRunning = false;
ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo serviceInfo : activityManager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceInfo.service.getClassName().equals(DownloadService.class.getName())) {
isServiceRunning = true;
break;
}
}
subscriber.onNext(isServiceRunning);
subscriber.onCompleted();
} catch (Throwable e) {
subscriber.onError(e);
}
}
})
.delay(1, TimeUnit.SECONDS, Schedulers.io())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Boolean>() {
@Override
public void onCompleted() {
Intent startActivity = new Intent(SplashActivity.this, MainActivity.class);
startActivity.putExtra(MainActivity.POSITION_ARGUMENT_KEY, PreferenceUtils.getStartupScreen());
startActivity(startActivity);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
finish();
}
@Override
public void onError(Throwable e) {
if (BuildConfig.DEBUG) {
e.printStackTrace();
}
}
@Override
public void onNext(Boolean isServiceRunning) {
if (!isServiceRunning) {
Intent startService = new Intent(SplashActivity.this, DownloadService.class);
startService.putExtra(DownloadService.INTENT_RESTART_DOWNLOAD, DownloadService.INTENT_RESTART_DOWNLOAD);
startService(startService);
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mRestartSubscription != null) {
mRestartSubscription.unsubscribe();
mRestartSubscription = null;
}
}
}