package cn.bingoogolapple.media;
import android.app.Activity;
import android.app.Application;
import android.app.Notification;
import android.support.v4.app.NotificationManagerCompat;
import java.util.LinkedList;
import cn.bingoogolapple.media.util.ToastUtil;
/**
* 作者:王浩 邮件:bingoogolapple@gmail.com
* 创建时间:15/9/2 下午4:13
* 描述:
*/
public class App extends Application {
private static final String TAG = App.class.getSimpleName();
private static App sInstance;
private long mLastPressBackKeyTime;
private LinkedList<Activity> mActivities = new LinkedList<>();
private NotificationManagerCompat mNotificationManager;
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
mNotificationManager = NotificationManagerCompat.from(this);
}
public static App getInstance() {
return sInstance;
}
/**
* 获取当前版本名称
*
* @return
*/
public String getCurrentVersionName() {
try {
return getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (Exception e) {
// 利用系统api getPackageName()得到的包名,这个异常根本不可能发生
return null;
}
}
public void addActivity(Activity activity) {
mActivities.add(activity);
}
public void removeActivity(Activity activity) {
mActivities.remove(activity);
}
/**
* 双击后完全退出应用程序
*/
public void exitWithDoubleClick() {
if (System.currentTimeMillis() - mLastPressBackKeyTime <= 1500) {
exit();
} else {
mLastPressBackKeyTime = System.currentTimeMillis();
ToastUtil.show(R.string.toast_exit_tip);
}
}
/**
* 退出应用程序
*/
public void exit() {
Activity activity;
while (mActivities.size() != 0) {
activity = mActivities.poll();
if (!activity.isFinishing()) {
activity.finish();
}
}
android.os.Process.killProcess(android.os.Process.myPid());
System.gc();
System.exit(0);
}
public void addNotification(int id, Notification notification) {
mNotificationManager.notify(id, notification);
}
public void removeNotification(int id) {
mNotificationManager.cancel(id);
}
}