0

我构建了一个连接到 sqlite 数据库的简单应用程序,该应用程序使用故事板作为 UI。第一次,它会抛出一个登录视图。如果我的身份验证成功,我将我在sqlite数据库中的状态更改为1。默认为0。登录后,我可以使用该应用程序。

例如,如果我杀死了应用程序,我怎么知道我的应用程序已被杀死?我需要再次将状态更改为默认值。所以每当我再次点击该应用程序时,我都必须再次登录。

知道怎么做吗?谢谢。

4

4 回答 4

1

您的应用程序委托实现了几种处理应用程序状态更改的方法。来自 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 协议参考

于 2012-11-05T13:58:51.920 回答
0

您无法检测到您的应用程序是否已被终止,因为您的应用程序进程被系统终止,并且没有调用任何代码来通知您的应用程序它已被终止。

你想要的是设置一些布尔值:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

因为如果您在应用程序被杀死后重新启动它,则会调用它。

对于其他州,Moshe 给出了答案

于 2012-11-05T14:10:48.380 回答
0

您可以在以下位置执行关闭操作,

- (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?
}
于 2012-11-05T13:58:03.223 回答
-1

编辑

使用委托方法,例如:

applicationWillResignActive
于 2012-11-05T13:55:14.963 回答