使用服务检查用户在Android中是否具有有效会话

63lcw9qa  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(122)

此时,我的应用程序看起来如下所示:
SplashScreen -> LogInScreen -> TextActivity
在LogInScreen中,我检查用户是否仍处于活动状态(即已登录)或具有有效会话,如果没有问题,则开始下一个Activity。
现在我想把它改成:SplashScreen -> TextActivity
当用户在TextActivity中工作时。我想检查一个Service,如果用户必须再次登录(也许如果他没有登录了一段时间)。
使用Service是正确的方法吗?如果用户必须再次登录,我可以关闭所有Activity并启动LogInScreen吗?
我在文档中读到,即使被调用的Activity被销毁,Service仍在进行中。但是我不能从服务处退东西,对吗?
我想做的事是多么的清晰。
亲切的问候!

nukf8bse

nukf8bse1#

我不建议将服务作为后台任务运行,这几乎不会消耗内存。
我假设您的Login部件向服务器发送请求以获取凭据,然后将您的用户登录到应用程序。所以基本上我假设你有一个服务器,你正在发送请求并从服务器获得响应。
要检查用户是否具有有效的会话,您只需检查服务器响应中的会话是否已过期。

qni6mghb

qni6mghb2#

使用共享首选项,这将一劳永逸地解决您的问题。
首先,如果您使用服务器身份验证进行用户登录,则请求服务器进行身份验证,并使用其ID或密码返回结果,并设置为共享首选项,下次访问应用程序时,检查是否为共享首选项设置了值,如果设置了,则开始下一个活动。

sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

//        Checking values for Keys Keyname, Keypass, Keyemail if available then get the strings values and set to respective EditTexts.

    if(sharedpreferences.contains("Keyname") && sharedpreferences.contains("Keypass") && sharedpreferences.contains("Keyemail"))
    {
      // start your activity herein
    }else {
        Toast.makeText(MainActivity.this, "Shared Preference not available", Toast.LENGTH_LONG).show();
    }

就是这样。
只有一次登录将在那里。

相关问题