是以编程方式退出应用程序的更好方法吗?
最近我做了一个广播应用程序,其中有一个用户设置,使用NSTimer设置时间退出应用程序进程(我的意思是睡眠时间)。当时间到达应用程序应停止其进程并退出。
我使用这些语句在时间到了时退出应用程序,
[[UIApplication sharedApplication] suspend];
[[UIApplication sharedApplication] terminateWithSuccess];
theTimer=[NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(countTime) userInfo:nil repeats:YES];
counter-=1;
timeLeft.text=[NSString stringWithFormat:@" %d",counter];
if (counter==0.0) {
[theTimer invalidate];
[[UIApplication sharedApplication] suspend];
[[UIApplication sharedApplication] terminateWithSuccess];
是使用[[UIApplication sharedApplication] suspend]的任何问题; [[UIApplication sharedApplication] terminateWithSuccess];方法
退出应用程序的任何其他更好的方法,或至少冻结应用程序进程.. 我需要帮助吗?
答案 0 :(得分:2)
Apple不会批准任何故意暂停或终止的应用程序。您只能使用那些不包含suspend
或terminateWithSuccess
的{{3}}方法。
答案 1 :(得分:0)
我总是使用exit(0)。我想如果你必须在应用程序退出之前运行代码,你应该在退出(0)之前调用它。
Apple discourages使用exit()因为从用户的角度看它看起来像是崩溃。但是他们也说没有API调用来优雅地终止你的应用程序。
如果您正在寻找一种方法来终止您的应用而无需用户回家,在睡眠时间,我认为他不会将其与崩溃混淆,因为他不会关注您的应用并退出()不会留下崩溃日志。
所以,你的选择是:
答案 2 :(得分:0)
tanq for your replays,所以我忘了以编程方式退出我的应用程序。下一步是停止播放我的MPMoviePlayerController对象。得到了下一个级别的问题
我的sleepTime和音乐播放页面的设置页面,两者都是不同的viewControllers 所以我无法在时间设置页面中直接访问MPMoviePlayerController对象,所以我在音乐播放页面上创建了一个方法
MPMoviePlayerController *player=[[MPMoviePlayerController alloc]initWithContentURL:[NSURL URLWithString:@"http://www.radioparadise.com/musiclinks/rp_64aac.m3u"]];
[player prepareToPlay];
[player play];
- (IBAction)StopPlay:(id)sender
{
[player stop];
}
所以我为音乐播放页面创建了一个对象,我从设置页面调用了这个方法。 这是我在settingsPage中的代码
@class MusicPlayingPage;
@interface secondView : UIViewController
{
MusicPlayingPage *audio;
}
并在settingsPage中调用方法
[audio stopPlay];
控制正确到达streamingPage,但似乎播放器没有停止播放,我无法访问任何这些播放器选项[播放器停止]; ,[玩家暂停];
musicPlayingPage
中此方法的任何问题- (IBAction)StopPlay:(id)sender
{
[player stop];
}
抱歉,如果我的问题不明白。