我构建了一个连接到 sqlite 数据库的简单应用程序,该应用程序使用故事板作为 UI。第一次,它会抛出一个登录视图。如果我的身份验证成功,我将我在sqlite数据库中的状态更改为1。默认为0。登录后,我可以使用该应用程序。
例如,如果我杀死了应用程序,我怎么知道我的应用程序已被杀死?我需要再次将状态更改为默认值。所以每当我再次点击该应用程序时,我都必须再次登录。
知道怎么做吗?谢谢。
我构建了一个连接到 sqlite 数据库的简单应用程序,该应用程序使用故事板作为 UI。第一次,它会抛出一个登录视图。如果我的身份验证成功,我将我在sqlite数据库中的状态更改为1。默认为0。登录后,我可以使用该应用程序。
例如,如果我杀死了应用程序,我怎么知道我的应用程序已被杀死?我需要再次将状态更改为默认值。所以每当我再次点击该应用程序时,我都必须再次登录。
知道怎么做吗?谢谢。
您的应用程序委托实现了几种处理应用程序状态更改的方法。来自 UIApplication.h 标头。
- (void)applicationDidFinishLaunching:(UIApplication *)application;
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);
- (void)applicationDidBecomeActive:(UIApplication *)application;
- (void)applicationWillResignActive:(UIApplication *)application;
- (void)applicationWillTerminate:(UIApplication *)application;
您可以实现任何相关的方法,在这种情况下是applicationWillTerminate
更改状态的方法。或者,总是在applicationDidBecomeActive
. (但这并不能解决更新数据库的问题。如果数据库是本地的,则没有问题,只需在辞职或终止之前更改数据库即可。这里的挑战是您的数据库是否位于服务器上。尽管它可能会 bot是一个问题,我可以看到连接超时影响远程值的完整性。)
这些方法会在您的应用程序委托中自动添加到您的项目中,可以在 AppDelegate.h 和 AppDelegate.m 文件中找到。
如需完整说明,请查看UIApplication Delegate 协议参考。
您无法检测到您的应用程序是否已被终止,因为您的应用程序进程被系统终止,并且没有调用任何代码来通知您的应用程序它已被终止。
你想要的是设置一些布尔值:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
因为如果您在应用程序被杀死后重新启动它,则会调用它。
对于其他州,Moshe 给出了答案
您可以在以下位置执行关闭操作,
- (void)applicationWillTerminate:(UIApplication *)application
{
// Log out?
}
如果您的应用程序没有被终止而是被暂停,您也可以这样做,例如在来电期间,
- (void)applicationWillResignActive:(UIApplication *)application
{
// Log out?
}
或者,
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Log out?
}
或者,在简历上,
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Log in?
}
或者,
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Log in?
}
编辑
使用委托方法,例如:
applicationWillResignActive