package com.buddycloud.init;
import java.io.File;
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.os.StrictMode;
import com.buddycloud.log.Logger;
import com.buddycloud.utils.ImageHelper;
/**
* This class used for managing the application global context
*
* @author Adnan Urooj (Deminem)
*
*/
public class ApplicationManager extends Application {
protected static final String TAG = ApplicationManager.class.getSimpleName();
private static final boolean DEVELOPER_MODE = false;
private static Context context;
private static ApplicationManager mInstance;
public void onCreate() {
super.onCreate();
mInstance = this;
// Initialize the app context
context = getApplicationContext();
// Do initial setup
init();
}
public static synchronized ApplicationManager getInstance() {
return mInstance;
}
public static Context getAppContext() {
return context;
}
private void init() {
applicationDebuggingMode();
ImageHelper.configUIL(context);
}
@SuppressLint("NewApi")
private void applicationDebuggingMode() {
if (DEVELOPER_MODE) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
}
/**
* ========================
* Database Cleanup Methods
* ========================
*/
private void clearApplicationData()
{
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Logger.info("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
}
}
}
}
private boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
return dir.delete();
}
}