Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序应如何处理以下情况:;“清晰数据”;使用了什么?_Android_Android Activity - Fatal编程技术网

Android 应用程序应如何处理以下情况:;“清晰数据”;使用了什么?

Android 应用程序应如何处理以下情况:;“清晰数据”;使用了什么?,android,android-activity,Android,Android Activity,在Android上,用户可以使用设置->应用程序管理器->应用程序->清除数据功能并清除应用程序的所有存储数据。但是,如果用户使用应用程序切换器切换回应用程序,它将切换回上次使用的活动。在某些情况下,比如需要登录的应用程序,该活动将不适用于没有数据的情况。申请应如何处理他的案件?每个活动是否应派生自一个基本活动类,该类检查数据是否已被删除,然后启动相应的活动(例如,登录活动)?还有比这更优雅的解决方案吗?与其检查数据是否已被删除,不如检查用户是否已登录。如果他不是,你可以按照你的建议把他送回登录

在Android上,用户可以使用设置->应用程序管理器->应用程序->清除数据功能并清除应用程序的所有存储数据。但是,如果用户使用应用程序切换器切换回应用程序,它将切换回上次使用的活动。在某些情况下,比如需要登录的应用程序,该活动将不适用于没有数据的情况。申请应如何处理他的案件?每个活动是否应派生自一个基本活动类,该类检查数据是否已被删除,然后启动相应的活动(例如,登录活动)?还有比这更优雅的解决方案吗?

与其检查数据是否已被删除,不如检查用户是否已登录。如果他不是,你可以按照你的建议把他送回登录界面

在任何情况下,如果您正在使用oAuth,或者曾经打算将其实现为登录,那么应该实现检查用户是否登录,因为oAuth令牌最终会过期。在这种情况下,没有删除任何数据,但用户不再登录,这将导致他们陷入不适当的
活动中

只需为需要登录的
活动创建一个超级类,该类将检查用户是否登录,并让所有需要登录的
活动扩展该类。然后,只要调用
onCreate
onResume
方法,就可以调用super


如果用户擦除了他们的数据,他们将自动注销,因此您只需检查他们是否已登录。

按“清除数据”将停止应用程序的进程,因此您的代码将不会运行。
不幸的是,除非你是一名律师,否则没有办法抓住这种行为的意图。
处理这种情况的最佳实践方法是使用和基本活动类。

是的,在我的情况下,我可以检查用户是否登录,但我也在考虑一个更一般的情况,即应用程序不涉及登录。等等,我完全忘了这一点,但你的应用程序到底是如何打开的?清除数据会自动杀死你的应用程序,因此当你重新打开它时,它应该会打开默认的活动,除非你用活动的onDestroy()或onStop()方法做了一些奇怪的事情。与其擦除数据,不如尝试强制关闭应用程序并重新打开它。它应该在启动器活动时重新打开。如果没有,您的代码中有一些特定的东西导致了错误。我在问题中提到过,但是如果您使用应用程序切换器返回到您的应用程序,它会打开上次使用的活动。当您使用“清除数据”时,它不会从应用程序切换器中清除应用程序。清除数据时,应用程序将自动从应用程序切换器中删除。@nobalG这对我来说不是这样。如果我运行我的应用程序,点击主页按钮,使用“清除数据”,然后转到应用程序切换器,我的应用程序仍然会在那里。我正在运行Android 4.4.2。它是否打开了切换器中缓存的同一个屏幕,或者你的应用程序从第一个屏幕(默认屏幕)启动?@nobalG有点奇怪,它实际上不是最后一个活动,而是最后一个使用的活动之前的活动,这两个活动都不是默认活动。我刚刚检查过,运行Android OS 5或更高版本的设备不会出现此问题。我只在安卓4.4.2设备上见过这个问题。