-1

我有LoginActivity哪个是我的主要活动以及 LAUNCHER 活动,我还有其他活动,例如CustomerAddActivity& CustomerListActivity

现在假设我在CustomerAddActivity里面,我按下 Home 按钮,应用程序进入后台,当应用程序再次进入前台时,它必须首先询问LoginActivity是否有效的凭据(简单的凭据,例如来自 sq-lite 的用户名和 pin),然后返回CustomerAddActivitywith这是状态。

4

2 回答 2

-1

返回您的应用程序时,您可以startActivityForResult登录用户,然后返回之前的状态。为了从任何地方执行此操作,您可以从所有其他类中定义BaseActivity这样的抽象:override

public abstract class BaseActivity extends AppCompatActivity {
    public static final int REQUEST_CODE = 1;
    private boolean shouldCheckCredentials = false;

    @Override
    protected void onPause() {
        shouldCheckCredentials = true;
        super.onPause();
    }

    @Override
    protected void onResume() {
        if(shouldCheckCredentials){
            Intent loginIntent = new Intent(this,LoginActivity.class);
            startActivityForResult(loginIntent,REQUEST_CODE);
        }
        super.onResume();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == BaseActivity.REQUEST_CODE && resultCode == RESULT_OK) {
            shouldCheckCredentials = false;
        }
    }
}
于 2017-01-31T13:09:00.217 回答
-1

您可以在从 LoginActivity 启动 CustomerAddActivity 时在 Intent 中传递登录信息

在 LoginActivity

Intent intent = new Intent(this, CustomerAddActivity.class);
    intent.putExtra("login_info", "success");
    startActivity(intent);

然后在 CustomerAddActivity() 的 onResume() 中删除该登录信息

 @Override
protected void onResume() {
    super.onResume();

    String login = getIntent().getStringExtra("login_info");
    if(login != null){
        getIntent().removeExtra("login_info"); 

    } else {
        startActivity(new Intent(getApplicationContext(), LoginActivity.class));
    }
}

因此,每当您的 CustomerAddActivity 进入前台时,它首先会检查 login_info。如果它找不到它将启动 LoginAvctivity。

于 2017-01-31T13:24:12.167 回答