启动方式:luncher通过Intent(包名/类名)来启动app,在初次启动app时Application的onCreate方法中的日志正常打印,并且在onCreate中通过ContentResolver获取的数据正常。
问题:在设备断电重启后再次启动app,未看到Application的onCreate中打印的日志,并且未执行ContentResolver获取数据。
部分代码如下:
Application onCreate:
@Override
public void onCreate() {
super.onCreate();
initCrashReport(); //初始化bugly数据收集
CrashReport.setUserId(DeviceUtils.getAndroidID(this.getApplicationContext()));
//其余内容只在主进程中初始化
if (!isMainProcess(this)){
Log.i(TAG, "有其他进程启动了");
return;
}
Log.i(TAG, "是主进程");
resetDensity();
if (BuildConfig.DEBUG) {
Logger.init().setLevel(Config.LEVEL_FULL);
} else {
Logger.init().setLevel(Config.LEVEL_FULL);
}
//获取数据
Logger.i("OperatorUtils init");
OperatorUtils.getInstance().init(getApplicationContext());
RxJavaPlugins.setErrorHandler(throwable -> Log.e(TAG,throwable.toString()));
}
OperatorUtils:
public class OperatorUtils {
private static String uri = "content://stbauthinfo/authentication";
private static String userId = "unknown";
private static String token = "unknown";
private static String epgSever = "unknown";
private static String platform = "unknown";
private static volatile OperatorUtils sOperatorUtils;
private OperatorUtils(){}
public static OperatorUtils getInstance(){
if (sOperatorUtils == null){
synchronized (OperatorUtils.class){
if (sOperatorUtils == null){
sOperatorUtils = new OperatorUtils();
}
}
}
return sOperatorUtils;
}
public void init(final Context context){
new Thread(){
@Override
public void run() {
getConfig(context,uri);
}
}.start();
}
private void getConfig(Context context, String uri){
Logger.i("uri:" + uri);
if (context == null) return;
try {
ContentResolver res = context.getContentResolver();
Cursor c = res.query(Uri.parse(uri), null, null, null, null);
String value;
String name;
if (c != null){
Logger.i("Count:"+c.getCount());
while (c.moveToNext()) {//判断数据表里有数据
name = c.getString(c.getColumnIndex("name"));
value = c.getString(c.getColumnIndex("value"));
Logger.i("value=" + value);
if ("username".equals(name)){
userId = value;
}else if ("user_token".equals(name)){
token = value;
}else if ("epg_server".equals(name)){
epgSever = value;
}else if ("platform".equals(name)){
platform = value;
}
}
c.close();
}
}catch (Exception e){
Logger.e(e.toString());
}
}
public static String getParameter(String key){
if ("userId".equals(key)){
return userId;
}else if ("token".equals(key)){
return token;
}else if ("epgSever".equals(key)){
return epgSever;
}else if ("platform".equals(key)){
return platform;
}else {
return "unknown";
}
}
}
第一次正常打印
重启设备后
Logger.i("OperatorUtils init");
Logger.i("uri:" + uri);
Logger.i("Count:"+c.getCount());
Logger.i("value=" + value);
都未打印