Iphone 检测我的应用程序是否被杀
我已经构建了一个连接到sqlite数据库的简单应用程序,该应用程序使用故事板作为UI。第一次,它将抛出一个登录视图。如果身份验证成功,我会将sqlite数据库中的状态更改为1。默认情况下,它是0。登录后,我可以使用该应用程序 例如,如果我杀死应用程序,我如何知道我的应用程序已被杀死?我需要将状态再次更改为默认状态。因此,每当我再次点击应用程序时,我必须再次登录 你知道怎么做吗?谢谢 编辑 使用委托方法 例如:Iphone 检测我的应用程序是否被杀,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我已经构建了一个连接到sqlite数据库的简单应用程序,该应用程序使用故事板作为UI。第一次,它将抛出一个登录视图。如果身份验证成功,我会将sqlite数据库中的状态更改为1。默认情况下,它是0。登录后,我可以使用该应用程序 例如,如果我杀死应用程序,我如何知道我的应用程序已被杀死?我需要将状态再次更改为默认状态。因此,每当我再次点击应用程序时,我必须再次登录 你知道怎么做吗?谢谢 编辑 使用委托方法 例如: 您可以在中执行关闭操作 - (void)applicationWillTerminat
您可以在中执行关闭操作
- (void)applicationWillTerminate:(UIApplication *)application
{
// Log out?
}
如果你的应用程序没有死机,只是挂起了,比如在来电时,你也可以这样做
- (void)applicationWillResignActive:(UIApplication *)application
{
// Log out?
}
或者
或者,在简历上
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Log in?
}
或者
应用程序委托实现了几个方法,用于处理应用程序中的状态更改。从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;
您可以实现任何相关的方法,在这种情况下,
应用程序将终止
方法以更改状态。或者,始终在ApplicationIDBecomeActive
中弹出登录视图。(但是,这并不能解决更新数据库的问题。如果数据库是本地的,则没有问题,只需在辞职或终止之前更改数据库即可。这里的挑战是,如果您的数据库位于服务器上。虽然这可能是个问题,但我可以看到连接超时会影响远程值的完整性。)
这些方法会在应用程序委托中自动添加到项目中,可以在AppDelegate.h和AppDelegate.m文件中找到
要获得完整的解释,请查看。您无法检测您的应用程序是否已被终止,因为您的应用程序的进程被系统终止,并且不会调用任何代码来通知您的应用程序它已被终止 您要做的是在中设置一些布尔值:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
因为如果在应用程序被终止后重新启动应用程序,则会调用此函数
对于其他州,请参见您好,谢谢您的回答。。但我用的是ARC。。我怎么处理这笔交易?谢谢。
dealloc
方法是在UIViewController中实现的,所以在所有情况下,当你的应用程序关闭时,它都不会被捕获。@woz你在说什么-dealloc
在某个点或另一个点为所有对象调用,只要引用计数达到零。您的AppDelegate
在这方面并不特殊,将调用dealloc,唯一的问题是,.@RichardJ.rossiidealloc
方法显然不是处理此问题的方法。@RichardJ.rossii如果将其作为任何UIViewController的方法实现,则不会始终调用它。我是第一个发布这个问题正确答案的人,但你不会放过它。我将删除我的答案,您可以发布自己的答案供我挑剔,因为您对iOS了如指掌。应用程序将终止:
在启用多任务时(默认情况下)将永远不会被调用。@omz-即使用户通过多任务托盘手动终止应用程序,也是这样吗?是,在这种情况下,应用程序就被终止了。@Moshe-是的。。我想知道用户是否手动终止应用程序。这是否也在使用applicationWillTerminate?谢谢。不,根据@omz,您希望实现applicationWillResignActive。(无效)applicationWillTerminate:(UIApplication*)application->如果我正确终止应用程序,我会使用此选项?我的情况是用户手动终止应用程序。:)我试过了。但我从不把应用程序称为willterminante。有什么想法吗?
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Log in?
}
- (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;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions