Android 立即将会话过期设置为所有活动

Android set session expired to all activities at once

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

代码如下:

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 步: 像这样创建基础 activity,

public class BaseActivity extends ActionBarActivity {

第 2 步: 将您的 checkConnection() 方法放入此 class.

第 3 步: 使用 BaseAcitivity 并扩展您应用中的任何 activity 并调用特定方法。

public class YourActivity extends BaseActivity {

让我知道这是否有效。

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

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

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