在每个应用程序启动时检查布尔值

时间:2016-06-29 09:39:48

标签: android

我想在每个应用程序启动时检查,如果布尔值为true。因此,当布尔值为false时,应将用户重定向到某个活动。我在开始活动中打电话。但是当用户通过通知或直接活动开始进入应用程序时,不会调用此方法。

我尝试在我的Applications类中执行此操作,但由于我无法将用户重定向到那里的活动,这不起作用,我不想将此调用添加到每个活动。

如果用户已登录,无论是哪个活动都已启动,我该如何检查?

2 个答案:

答案 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)