应用程序中的服务在后台被杀死

时间:2013-05-15 07:11:25

标签: android android-service

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

3 个答案:

答案 0 :(得分:1)

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

中检索它们后从首选项中删除它们

答案 1 :(得分:1)

如果您不想在共享首选项中保存登录凭据,那么您可以在共享首选项中实现其他选项,例如商店登录状态,而不是登录凭据。

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

希望它会对你有所帮助。

答案 2 :(得分:1)

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

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

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

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

另见帖子:Android: Storing username and password?