package cn.koolcloud.ipos.appstore;
import java.util.Map;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import cn.koolcloud.ipos.appstore.utils.Env;
import cn.koolcloud.ipos.appstore.utils.Logger;
import com.baidu.frontia.FrontiaApplication;
/**
* <p>Title: AppStoreApplication.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: All In Pay</p>
* @author Teddy
* @date 2013-11-7
* @version
*/
public class AppStoreApplication extends FrontiaApplication {
private static final String TAG = "AppStoreApplication";
public static int THEME = R.style.Theme_Sherlock;
private LayoutInflater inflater; //view inflater
private Map<String, PackageInfo> installedPackage;
private static final int INIT_APP_INFOS = 3;
private boolean isFirstStart = false;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
initApps();
}
public LayoutInflater getInflater() {
return inflater;
}
public void saveInstalledAppsInfo(Map<String, PackageInfo> packages) {
this.installedPackage = packages;
}
public Map<String, PackageInfo> getInstalledAppsInfo() {
return this.installedPackage;
}
public void addAppInfoCache(PackageInfo packageInfo) {
if (packageInfo != null) {
installedPackage.put(packageInfo.applicationInfo.packageName, packageInfo);
}
}
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case INIT_APP_INFOS:
Map<String, PackageInfo> packages = (Map<String, PackageInfo>) msg.obj;
saveInstalledAppsInfo(packages);
default:
break;
}
}
};
public void initApps() {
new InitAppsThread().start();
}
public boolean isFirstStart() {
return this.isFirstStart;
}
public void setFirstStart(boolean firstStarted) {
this.isFirstStart = firstStarted;
}
//init apps in a new thread
class InitAppsThread extends Thread {
@Override
public void run() {
Logger.d("invoke scan local apps");
Long start = System.currentTimeMillis();
Map<String, PackageInfo> installedPackage = Env.scanInstalledAppToMap(getApplicationContext());
Long end = System.currentTimeMillis();
Logger.d("total time:" + (end - start));
Message msg = mHandler.obtainMessage();
msg.obj = installedPackage;
msg.what = INIT_APP_INFOS;
mHandler.sendMessage(msg);
}
}
}