安卓设置会话一次过期到所有活动



我有一个方法可以检查用户是否有互联网连接,如果没有,他有 24 小时的时间再次上线,如果没有,应用程序应该停止并将用户带到登录活动,它正在工作,但问题是,我在登录后的第一个活动中调用此方法,因此代码仅在该活动中运行, 我需要一种方法在整个应用程序中调用它,而无需在每个活动中实例化它,有没有办法做到这一点?如何?任何帮助将不胜感激!

这是代码:

public void checkConnection(){
        Repositorio mRepositorio = new Repositorio(getApplicationContext());

        SecurePreferences mSessao = new SecurePreferences(getApplicationContext(), "sessao");
        CredencialModel mCredencialModel = mRepositorio.getCredencialPorId(Integer.valueOf(mSessao.getString("id_credencial")));

        try {
            Date dNow = new Date();
            String dt = String.valueOf(mCredencialModel.getUltimo_sincronismo());  // Start date
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            Calendar c = Calendar.getInstance();
            c.setTime(sdf.parse(dt));
            c.add(Calendar.DATE, 1);  // number of days to add
            dt = sdf.format(c.getTime());  // dt is now the new date
            Date lastConnection = sdf.parse(dt);
            Date dateNow = sdf.parse(sdf.format(dNow));
            if(!mRepositorio.temConexao() && (lastConnection.before(dateNow))){
                fnTrocarUsuario();
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }



    }

private void fnTrocarUsuario() {
        SecurePreferences mSessao = new SecurePreferences(getApplicationContext(), "sessao");
        mSessao.clear();
        // After logout redirect user to Login Activity
        Intent i = new Intent(getApplicationContext(), MainActivity.class);
        // Closing all the Activities
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        // Add new Flag to start new Activity
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // Staring Login Activity
        getApplicationContext().startActivity(i);
        finish();
    }

步骤1:创建这样的基本活动,

public class BaseActivity extends ActionBarActivity {

Step-2 : 把你的 checkConnection() 方法放在这个类中。

步骤3:使用基本活动性并扩展应用中的任何活动并调用特定方法。

public class YourActivity extends BaseActivity {

让我知道这是否有效。

您应该通过应用程序注册以侦听活动生命周期事件。 更多信息在这里:

https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)

然后在 onActivityResumed 回调中,您可以检查连接。

最新更新