我想在每个应用程序启动时检查,如果布尔值为true。因此,当布尔值为false时,应将用户重定向到某个活动。我在开始活动中打电话。但是当用户通过通知或直接活动开始进入应用程序时,不会调用此方法。
我尝试在我的Applications类中执行此操作,但由于我无法将用户重定向到那里的活动,这不起作用,我不想将此调用添加到每个活动。
如果用户已登录,无论是哪个活动都已启动,我该如何检查?
答案 0 :(得分:2)
创建BaseActivity并使用此基本活动扩展您的所有活动。然后将布尔检查代码放在该基本活动中。无论您的应用程序从哪个活动开始,如果您的所有活动和扩展此基本活动都将被调用。它看起来像这样:
Echo $riskData[0]['range_a'];
然后用这个扩展你的所有活动。
答案 1 :(得分:1)
当应用启动时,创建一个类的新实例:
public class backgroundHandler {
Context c;
boolean isActive;
public backgroundHandler(Context c){
this.c = c;
load();
}
private void load(){
isActive = Saver.loadBoolean("fileName", c);
}
public boolean isActive(){
return isActive();
}
}
Saver.java:
public class Saver {
static FileOutputStream fos;
static FileInputStream fis;
public static void save(String filename, String data, Context c){
try {
fos = c.openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String file;
public String getFile(){return file;}
public void setFile(String loc){
file = loc;
}
String result;
private static String mainLoad(String fn, Context c){
String collected = null;
try{
fis = c.openFileInput(fn);
byte[] dataArray = new byte[fis.available()];
while(fis.read(dataArray) != -1){
collected = new String(dataArray);
}
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
try {
fis.close();
return collected;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
public static int loadInt(String fn, Context c){
if(mainLoad(fn,c) == null) return 0;
else return Integer.parseInt(mainLoad(fn,c));
}
public static double loadDouble(String fn, Context c){
if(mainLoad(fn,c) == null) return 0;
else return Double.parseDouble(mainLoad(fn,c));
}
public static float loadFloat(String fn, Context c){
return Float.parseFloat(mainLoad(fn,c));
}
public static String loadString(String fn, Context c){
return mainLoad(fn, c);
}
public static Boolean loadBoolean(String fn, Context c){
if(mainLoad(fn,c) == null) return false;
else return Boolean.parseBoolean(mainLoad(fn,c));
}
public static BigInteger loadBigInteger(String fn, Context c){
return new BigInteger(mainLoad(fn,c));
}
public static BigDecimal loadBigDecimal(String fn, Context c){
return new BigDecimal(mainLoad(fn,c));
}
}
然后在一项活动中:
public static void init(backgroundHandler handler){
this.handler = handler;
}
然后您可以随时从任何活动中调用处理程序。请记得从新活动中的旧活动中拨打init
。它是静态的,因此Activity中的处理程序也应如此。
SecondActivity.init(handler);
Intent i = ...(call the new activity)