applicationdidbecomeactivedesktop 是什么什么时候调用

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
第一步:创建2个NSNotificationCenter监听[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:)name:UIApplicationWillResignActiveNotification object:nil]; //监听是否触发home键挂起程序.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:)name:UIApplicationDidBecomeActiveNotification object:nil]; //监听是否重新进入程序程序.第二步:实现2个NSNotificationCenter所触发的事件方法- (void)applicationWillResignActive:(NSNotification *)notification{
printf("按理说是触发home按下\n");}- (void)applicationDidBecomeActive:(NSNotification *)notification{
printf("按理说是重新进来后响应\n");}注: 在home键触发后,AppDelegate响应的方法为:- (void)applicationDidEnterBackground:(UIApplication *)application{
Use this method to release shared resources, save user data, invalidate timers,
and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
阅读(8515)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'iOS 在viewController中监听Home键触发以及重新进入界面的方法',
blogAbstract:'第一步:创建2个NSNotificationCenter监听[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:)name:UIApplicationWillResignActiveNotification object:nil]; //监听是否触发home键挂起程序.
[[NSNotificationCenter defaultCenter] addObserver:self',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:4,
publishTime:4,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}生命周期 - 简书
下载简书移动应用
写了90904字,被53人关注,获得了44个喜欢
生命周期2、简述应用生命周期App启动:当App启动时,首先由not running状态切换到inactive状态,此时调用application:didFinishLaunchingWithOptions:方法;然后由inactive状态切换到active状态,此时调用applicationDidBecomeActive:方法。当App发生中断时,由active状态切换到inactive状态,此时调用applicationWillResignActive:方法。来回切换App:当切换到另一个App时,由状态active切换到inactive,此时调用applicationWillResignActive:方法;然后从inactive状态切换到running状态,此时调用applicationDidEnterBackground:方法。而当切换回本来的App时,由running状态切换到inactive状态,此时调用applicationWillEnterForeground:方法,然后由inactive状态切换到active状态,调用applicationDidBecomeActive:方法。锁屏:当手机锁屏时,由状态active切换到inactive,此时调用applicationWillResignActive:;然后再由inactive状态切换到running状态,此时调用applicationDidEnterBackground:方法。系统常常是为其他app启动时由于内存不足而回收内存最后需要终止应用程序,但有时也会是由于app很长时间才响应而终止。如果app当时运行在后台并且没有暂停,系统会在应用程序终止之前调用applicationWillTerminate:来保存用户的一些重要数据以便下次启动时恢复到app原来的状态。/industry/9.html3、简述视图生命周期viewController叫做视图控制器。对内是用于管理视图,对外则是与其他的viewcontroller进行通信。它继承于NSObject。它分为两种类型,一种叫contentViewController,内容视图控制器,主要用于体现内容 如UITableView UIViewController这种直接显示内容的;还有一种叫做containerViewController,容器视图类。典型的就是tabBar,和navigation.它还包含好几个其它的viewController.每个view都有一个viewController。且view的生命周期也在viewController里面。所以在view释放之前,viewcontroller是不可以释放的。step1:initWithNib
viewController会进行alloc,并init.step2: loadView在这里会看它的子类是否有重写这个函数,如果重写了则调用子类的,否则就调用她自己的。注意,这个时候视图还是没有没加载进来的哦。step3:viewDidLoad这个时候视图已经存在了。可以在这里添加你想要添加的UI控件了。step4:viewWillAppear视图将出现在屏幕上了step5:viewDidAppear视图已经成功在屏幕上渲染完成了step6:viewWillDisappear视图将要消失了step7:viewDidDisappear视图从屏幕上消失了step8:viewDidUnLoad当发生内存警告的时候,如果本视图不是当前正在显示的视图,则会执行这个函数。将子视图释放。step9:dealloc释放viewController而view的生命周期则是step3——step8.viewController的生命周期就是step1——step97、ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是什么?当程序接到内存警告时View Controller将会收到这个消息:didReceiveMemoryWarning从iOS3.0开始,不需要重载这个函数,把释放内存的代码放到viewDidUnload中去。这个函数的默认实现是:检查controller是否可以安全地释放它的view(这里加粗的view指的是controller的view属性),比如view本身没有superview并且可以被很容易地重建(从nib或者loadView函数)。如果view可以被释放,那么这个函数释放view并调用viewDidUnload。你可以重载这个函数来释放controller中使用的其他内存。但要记得调用这个函数的super实现来允许父类(一般是UIVIewController)释放view。如果你的ViewController保存着view的子view的引用,那么,在早期的iOS版本中,你应该在这个函数中来释放这些引用。而在iOS3.0或更高版本中,你应该在viewDidUnload中释放这些引用。7.应用程序在启动的时候主要做了什么操作?答:应用程序在启动的时候,会执行main函数,而main函数里面主要执行了UIApplicationMain函数。UIApplicationMain函数执行完主要做了以下三个操作:(1)创建应用程序UIApplication对象。(2)创建了应用程序代理对象。默认的应用程序代理对象是AppDelegate。(3)建立一个事件循环RunLoop。用来实时监测应用程序中的各种事件(触摸,晃动,远程控制事件,通知,观察者,timer等等)。8.请描述一下viewController几个重要方法的执行时机答:视图控制器的生命周期分为创建、 显示 和 销毁。(1)创建xxx *x = [[xxx
alloc] init]
//作用:分配内存空间,创建控制器时使用(2)加载和显示:- (void)loadView: //作用:加载根视图(即为self.view赋值),在控制器view属性的getter方法首次调用的时候执行此方法。根视图已加载:- (void)viewDidLoad// loadView执行完毕之后,立即执行此方法。作用:给创建好的控件设置值,做网络请求,开启timer等loadView和viewDidLoad当首次访问controller的根视图时才会执行,即view属性的getter方法首次使用时执行,loadView执行在前,viewDidLoad执行在后。如果重写了loadView一定要给控制器的根视图赋值(self.view = xxV),在给控制器的根视图赋值的之前,不能使用控制器view属性的getter方法,否则会重复执行loadView和viewDidLoad方法。视图将要显示:- (void)viewWillAppear:视图将要被添加到UI层级上,还没有添加时执行。(此时视图还没有显示)视图已经显示:- (void)viewDidAppear视图已经被添加到UI层级上,视图已经显示出来时执行。(视图已经显示)视图将要消失:- (void)viewWillDisappear:视图将要被从UI层级上面移除,但视图还没有移除时执行。 (视图还可见)视图已经消失:- (void)viewDidDisappear:视图已经从UI层级上面移除,视图已经不可见时执行。 (视图不可见)(3)销毁:- (void)viewWillUnloadiOS6.0之后已经被弃用。iOS 5.0之前,当低内存且控制器的view不需要使用的时候会调用这个方法,即当控制器的根视图 将要 被释放时执行([vc.view release],vc.view还未置空),我们可以在这个方法中移除一些跟视图相关的观察者和通知,并记录视图的状态,以便之后重新创建视图。iOS6.0之后不再需要做释放了,该方法也被遗弃了。- (void)viewDidUnloadiOS6.0之后已经被弃用。iOS 5.0之前,当低内存且控制器的view不需要使用的时候会调用这个方法,即当控制器的根视图被释放时执行([vc.view release],vc.view已经为nil),这个方法给我们一个机会做内存的相关清理工作,如果控制器对某些视图有引用,可以在这里释放这些引用,同样可以释放一些懒加载的对象,但是不要释放那些不容易重新加载的数据。iOS6.0之后不再需要做释放了,该方法也被遗弃了。21.简述应用程序按Home键进入后台时的生命周期,以及从后台回到前台时的生命周期?应用程序的状态:Not running:未运行,程序没启动Inactive
:未激活,程序在前台运行,不过没接受到事件,没有事件处理的状态下通常处于这个状态。Active
程序在前台并且接收到了事件Backgound :后台
程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。Suspended :挂起
程序在后台不能执行代码。- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions//告诉代理进程启动但还没进入状态保存- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions//告诉代理启动基本完成程序准备开始运行- (void)applicationWillResignActive:(UIApplication *)application//当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了- (void)applicationDidBecomeActive:(UIApplication *)application//当应用程序入活动状态执行,这个刚好跟上面那个方法相反- (void)applicationDidEnterBackground:(UIApplication *)application//当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可- (void)applicationWillEnterForeground:(UIApplication *)application//当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。- (void)applicationWillTerminate:(UIApplication *)application//当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。- (void)applicationDidFinishLaunching:(UIApplication*)application//当程序载入后执行22.描述应用程序的启动顺序。①、程序入口main函数创建UIApplication实例和UIApplication代理实例②、在UIApplication代理实例中重写启动方法,设置第一ViewController③、在第一ViewController中添加控件,实现对应的程序界面。23.ViewController的alloc,loadView。viewDidLoad,viewWillAppear,viewDidUnload,dealloc、init分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?(UI第三讲 自定义视图、视图控制器)alloc初始化当前的ViewControllerloadView:没有正在使用nib视图页面,子类将会创建自己的自定义视图层viewDidLoad:试图被加载后调用viewWillAppear:试图即将出现的时候调用viewDidUnload:当系统内存吃紧的时候会调用该方法,释放掉当前未在window中显示的试图和对应的控制器
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
· 3人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:1、程序的五种状态
Not Running:未运行。
Inactive:前台非活动状态。处于前台,但是不能接受事件处理。
Active:前台活动状态。处于前台,能接受事件处理。
Background:后台状态。进入后台,如果又可执行代码,会执行代码,代码执行完毕,程序进行挂起。
Suspended:挂起状态。进入后台,不能执行代码,如果内存不足,程序会被杀死。
2、五态的关系
3、AppDelegate中的回调方法和通知
(1)回调方法:application:didFinishLaunchingWithOptions:
本地通知:UIApplicationDidFinishLaunchingNotification
& & 触发时机:程序启动并进行初始化的时候后。
适宜操作:这个阶段应该进行根视图的创建。(2)回调方法:applicationDidBecomeActive:
本地通知:UIApplicationDidBecomeActiveNotification
&&触发时机:程序进入前台并处于活动状态时调用。
& 适宜操作:这个阶段应该恢复UI状态(例如游戏状态)。
(3)回调方法:applicationWillResignActive:
本地通知:UIApplicationWillResignActiveNotification
&&触发时机:从活动状态进入非活动状态。
& 适宜操作:这个阶段应该保存UI状态(例如游戏状态)。
&(4)回调方法:applicationDidEnterBackground:
本地通知:UIApplicationDidEnterBackgroundNotification
&&触发时机:程序进入后台时调用。
& & 适宜操作:这个阶段应该保存用户数据,释放一些资源(例如释放数据库资源)。
(5)回调方法:applicationWillEnterForeground:
本地通知:UIApplicationWillEnterForegroundNotification
&&触发时机:程序进入前台,但是还没有处于活动状态时调用。
& & 适宜操作:这个阶段应该恢复用户数据。
(6)回调方法:applicationWillTerminate:
本地通知:UIApplicationWillTerminateNotification
&&触发时机:程序被杀死时调用。
& & 适宜操作:这个阶段应该进行释放一些资源和保存用户数据。
&4、程序启动
点击应用图标时,会经历三个状态:
Not running--&Inactive--&Active&
Not running --&
调用&application:didFinishLaunchingWithOptions:&发送:UIApplicationDidFinishLaunchingNotification&
Inactive--&Active&&
调用&applicationDidBecomeActive:&发送:UIApplicationDidBecomeActiveNotification&
&5、程序Home
根据info.plist中Application
does not run in background &/ &
UIApplicationExitsOnSuspend控制似乎否可以在后台运行或挂起。&&
如果可以在后台运行或者挂起会经历
Active--&Inactive--&Background--&Suspended&
Active--&Inactive&
调用&applicationWillResignActive:&发送:UIApplicationWillResignActiveNotification&
Background--&Suspended&
调用&applicationDidEnterBackground:&发送:UIApplicationDidEnterBackgroundNotification&
如果不可以后台运行或挂起会经历
&Active--&Inactive--&Background--&Suspended--&Not
Background--&Suspended&
调用&applicationDidEnterBackground:&发送:UIApplicationDidEnterBackgroundNotification&&
Suspended--&Not Running&
调用&applicationWillTerminate:&发送:UIApplicationWillTerminateNotification
6、挂起后,重新运行
Suspended--&Background--&Inactive--&Active
&Background--&Inactive&
&调用&applicationWillEnterForeground:&发送:UIApplicationWillEnterForegroundNotification&
&Inactive--&Active&&
调用&applicationDidBecomeActive:&发送:UIApplicationDidBecomeActiveNotification&
&7、内存不足,杀死程序
&Background--&Suspended--&Not
这种情况不会调用任何方法,也不会发送任何通知。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。iOS-移动开发(41)
NSTimer是iOS开发中的定时器机制,常用其ischeduledTimerWithTimeInterval方法来设置定时任务。
我们以一个倒计时的定时器来说明下边几点要注意的事项。
设置定时器
点击按钮,添加一个倒计时的定时器:
func demoNSTimer() {
btn.userInteractionEnabled = !btn.userInteractionEnabled
countdown = countTimer
if (timer != nil) {
timer.invalidate()
timer = nil
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "actionNSTimer", userInfo: nil, repeats: true)
timer.fire()
定时器触发:
func actionNSTimer() {
if (countdown & 1) {
if (timer != nil) {
countdown = countTimer
timer.invalidate()
timer = nil
lb.text = "\(countdown)"
lb.alpha = 1.0
lb.text = "\(countdown)"
lb.transform = CGAffineTransformMakeScale(1.0, 1.0)
lb.alpha = 1.0
countdown = countdown - 1
UIView.animateWithDuration(1.0, animations: { () -& Void in
self.lb.transform = CGAffineTransformMakeScale(2.0, 2.0)
self.lb.alpha = 0.0
}) { (Bool) -& Void in
if (self.countdown == 0) {
self.btn.userInteractionEnabled = true
通过以上代码,可创建一个倒计时的定时器。
暂停和恢复定时器
当定时器正在执行的过程中,暂停是不能使用invalidate方法的,而要重新设置fireDate。
if (timer.valid) {
timer.fireDate = NSDate.distantFuture() // 暂停
timer.fireData = NSDate.distantPast()
例如:如果APP进入后台(按下Home键),则一般情况下需要暂停定时器。可在applicationWillResignActive中使用NSNotification来暂停定时器,在applicationDidBecomeActive中再通知恢复定时器。
RunLoop模式
NSTimer不能放在UITableView或UIScrollView中, 因为cell的reuse会使其失效. 其实是Runloop Mode的原因.
// 修改mode, 这样滚动的时候也可接收其他runloop的消息了.
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
使用NSURLConnection的initWithRequest的时候, 创建异步请求线程和NSTimer一样,也是NSDefaultRunLoopMode的.
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)
connection.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
connection.start()
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:104869次
积分:2282
积分:2282
排名:第12126名
原创:116篇
转载:22篇
评论:22条
文章:65篇
阅读:64668
(2)(7)(6)(1)(4)(3)(5)(5)(13)(3)(19)(11)(6)(12)(5)(7)(8)(4)(8)(8)(1)(2)

我要回帖

更多关于 java 调用activemq 的文章

 

随机推荐