1

我有一个应用程序需要用户第一次登录,之后它应该保持这个状态。应用程序在登录过程中从后端接收一些数据。此数据在应用程序的生命周期内使用。
但是 Android 在内存不足的情况下会杀死我的应用程序。所以我搜索并找到了服务作为它的解决方案。所以我在服务中编写了登录代码。因此,每当服务重新启动(在后台杀死应用程序后),用户将自动登录。为此我想要用户凭据。但我不希望将登录凭据存储在共享首选项或数据库中。
任何形式的帮助都会很棒。

4

3 回答 3

1

如果您想在不使用共享首选项或数据库的情况下将凭据发送到服务,您可以在启动服务时发送它们。当您创建Intent用于启动服务的 时,putExtra(name, value)如果要将凭据发送到Service. (编辑)当服务被破坏时,您将不得不将凭据保存在某处。如果您不想将它们永久保留在共享首选项中,您可以在服务被销毁之前将它们保存在 onDestroy() 中,并在 onCreate() 中检索它们后将它们从首选项中删除

于 2013-05-15T07:18:38.460 回答
1

如果您不想将登录凭据保存在共享首选项中,则有解决方案,那么您可以实施其他选项,例如在共享首选项中存储登录状态而不是登录凭据。

并且您将能够维护用户登录状态的状态。

于 2013-05-15T07:32:16.597 回答
1

您可以更改服务器,使其返回一个身份验证令牌,该令牌存储在 SharedPreferences 中。然后将该令牌用于所有其他调用。

其他解决方案是存储密码的(加盐)哈希并上传。

这两种解决方案都不是万无一失的,如果有人能够获得您的加盐哈希或令牌(取决于您使用什么),他/她就可以登录。但至少,通过 HTTPS 登录,这样别人就无法从网络上嗅探您的令牌/凭证。

在 Android 上有一个 AccountManager,也许它可以让您了解如何实现。 http://developer.android.com/reference/android/accounts/AccountManager.html

另请参阅这篇文章:Android:存储用户名和密码?

于 2013-05-15T08:05:06.807 回答