检测我的应用程序已被杀死

时间:2012-11-05 13:48:10

标签: iphone objective-c cocoa-touch

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

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

知道怎么做吗?谢谢。

4 个答案:

答案 0 :(得分: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中抛出登录视图。 (但这并没有解决更新数据库的问题。如果数据库是本地的,没有问题,只需在辞职或终止之前更改数据库。这里的挑战是如果你的数据库存在于服务器上。虽然它可能是机器人是一个问题,我可以看到影响远程值完整性的连接超时。)

这些方法会自动添加到您的项目中,并在AppDelegate.h& AppDelegate.m文件。

要获得完整的解释,请查看UIApplication Delegate protocol reference

答案 1 :(得分: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?
}

答案 2 :(得分:0)

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

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

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

如果在应用程序被杀死后重新启动应用程序,则会调用此方法。

其他州通过Moshe

看到答案

答案 3 :(得分:-1)

修改

使用委托方法 如:

applicationWillResignActive