UIApplication详解 后台运行等
来源:互联网 发布:机甲mesuit 知乎 编辑:程序博客网 时间:2024/06/02 02:32
每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的。可以通过sharedApplication方法得到。
UIApplication对象的主要任务是处理用户事件的处理路径,例如分发一个UIEvent到另外一个对象去处理。UIApplication对象持有众多的UIWindow对象,因此可以组织app的展示。UIApplication对象还能处理一些资源,例如通过openURL:打开邮箱客户端或者设置界面等。
获得UIApplication对象
1
[UIApplication sharedApplication]
获得UIApplicationDelegate对象
1
[[UIApplication sharedApplication] delegate]
获得UIWindow对象
1
2
[[UIApplication sharedApplication] windows];
//UIWindow数组
[[UIApplication sharedApplication] keyWindow];
//UIWindow数组中最后调用makeKeyAndVisible方法的UIWindow对象
控制和处理UIEvent
1
2
3
4
- (
void
)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//分发一个event到另外一个对象去处理
[[UIApplication sharedApplication] sendAction:@selector(action: forEvent:) to:[CustomHandler sharedCustomHandler] from:self forEvent:event];
}
1
2
3
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
//开始忽略Event
//...中间调用动画等操作
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
//结束忽略Event
1
[UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
//晃动是否有撤销或者重做动作
打开URL资源
1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
//打开设置界面
配置通知设置
1
2
3
UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
//注册远程推送通知
1
2
[[UIApplication sharedApplication] registerForRemoteNotifications];
//注册
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
//注销
1
2
3
4
5
6
7
8
9
10
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = date;
//时间
localNotif.timeZone = [NSTimeZone localTimeZone];
//时区
localNotif.repeatInterval = NSCalendarUnitMinute;
//间隔
localNotif.soundName = UILocalNotificationDefaultSoundName;
//声音
localNotif.alertBody = @
"Local Test"
;
//通知内容
localNotif.applicationIconBadgeNumber = 1;
//数字标示
localNotif.userInfo = @{@
"key"
:@
"test"
};
//info
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
//注册通知
1
2
3
4
5
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotif];
//立即通知
[[UIApplication sharedApplication] cancelAllLocalNotifications];
//取消所有通知
[[UIApplication sharedApplication] cancelLocalNotification:localNotif];
//取消特定的通知
NSArray *arr = [[UIApplication sharedApplication] scheduledLocalNotifications];
//所有的通知
后台运行相关
1
2
3
4
5
6
7
8
9
10
11
[[UIApplication sharedApplication] applicationState];
//app状态
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:3600];
//设置后台运行时间
NSTimeInterval remainTime = [[UIApplication sharedApplication] backgroundTimeRemaining];
//app后台运行的时间
NSLog(@
"remainTIme = %f"
,remainTime);
int
state = [[UIApplication sharedApplication] backgroundRefreshStatus];
//后台刷新的状态
NSLog(@
"state = %d"
,state);
[[UIApplication sharedApplication] beginBackgroundTaskWithName:@
"taskOne"
expirationHandler:^{
}];
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
}];
[[UIApplication sharedApplication] endBackgroundTask:1];
远程的控制相关
1
2
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
系统的Idle Timer
1
[UIApplication sharedApplication].idleTimerDisabled = YES;
//不让手机休眠
APP样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//隐藏状态条
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
//设置状态条的样式
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
[[UIApplication sharedApplication] statusBarStyle];
//状态条的Frame
[[UIApplication sharedApplication] statusBarFrame];
//网络是否可见
[[UIApplication sharedApplication] isNetworkActivityIndicatorVisible];
//badge数字
[UIApplication sharedApplication].applicationIconBadgeNumber = 2;
//屏幕的方向
[[UIApplication sharedApplication] userInterfaceLayoutDirection];
设置状态条的方向
1
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
数据类型
1
UIBackgroundTaskIdentifier : Int
1
2
3
4
5
6
7
typedef
enum
: NSUInteger {
UIRemoteNotificationTypeNone = 0,
UIRemoteNotificationTypeBadge = 1 << 0,
UIRemoteNotificationTypeSound = 1 << 1,
UIRemoteNotificationTypeAlert = 1 << 2,
UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
} UIRemoteNotificationType;
1
2
3
4
5
6
7
typedef
enum
: NSInteger {
UIStatusBarStyleDefault,
UIStatusBarStyleLightContent,
UIStatusBarStyleBlackTranslucent,
UIStatusBarStyleBlackOpaque
} UIStatusBarStyle;
1
2
3
4
5
typedef
enum
: NSInteger {
UIStatusBarAnimationNone,
UIStatusBarAnimationFade,
UIStatusBarAnimationSlide,
} UIStatusBarAnimation;
1
2
3
4
5
typedef
enum
: NSInteger {
UIApplicationStateActive ,
UIApplicationStateInactive ,
UIApplicationStateBackground
} UIApplicationState;
1
2
const
UIBackgroundTaskIdentifier UIBackgroundTaskInvalid ;
const
NSTimeInterval UIMinimumKeepAliveTimeout;
1
2
3
4
5
typedef
enum
: NSUInteger {
UIBackgroundFetchResultNewData ,
UIBackgroundFetchResultNoData ,
UIBackgroundFetchResultFailed
} UIBackgroundFetchResult;
1
2
const
NSTimeInterval UIApplicationBackgroundFetchIntervalMinimum ;
const
NSTimeInterval UIApplicationBackgroundFetchIntervalNever;
1
2
3
4
5
typedef
enum
: NSUInteger {
UIBackgroundRefreshStatusRestricted ,
UIBackgroundRefreshStatusDenied ,
UIBackgroundRefreshStatusAvailable
} UIBackgroundRefreshStatus;
1
2
3
4
5
6
7
typedef
enum
: NSInteger {
UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown ,
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait ,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown ,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight ,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
} UIInterfaceOrientation;
1
2
3
4
typedef
enum
: NSInteger {
UIUserInterfaceLayoutDirectionLeftToRight ,
UIUserInterfaceLayoutDirectionRightToLeft ,
} UIUserInterfaceLayoutDirection;
1
NSString *
const
UIApplicationOpenSettingsURLString;
1
2
NSString *
const
UIApplicationStatusBarOrientationUserInfoKey ;
NSString *
const
UIApplicationStatusBarFrameUserInfoKey;
1
2
3
4
5
6
7
NSString *
const
UIContentSizeCategoryExtraSmall ;
NSString *
const
UIContentSizeCategorySmall ;
NSString *
const
UIContentSizeCategoryMedium ;
NSString *
const
UIContentSizeCategoryLarge ;
NSString *
const
UIContentSizeCategoryExtraLarge ;
NSString *
const
UIContentSizeCategoryExtraExtraLarge ;
NSString *
const
UIContentSizeCategoryExtraExtraExtraLarge;
1
2
3
4
5
NSString *
const
UIContentSizeCategoryAccessibilityMedium ;
NSString *
const
UIContentSizeCategoryAccessibilityLarge ;
NSString *
const
UIContentSizeCategoryAccessibilityExtraLarge ;
NSString *
const
UIContentSizeCategoryAccessibilityExtraExtraLarge ;
NSString *
const
UIContentSizeCategoryAccessibilityExtraExtraExtraLarge;
1
NSString *
const
UIApplicationInvalidInterfaceOrientationException;
通知
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
UIApplicationBackgroundRefreshStatusDidChangeNotification
UIApplicationDidBecomeActiveNotification
UIApplicationDidChangeStatusBarFrameNotification
UIApplicationDidChangeStatusBarOrientationNotification
UIApplicationDidEnterBackgroundNotification
UIApplicationDidFinishLaunchingNotification
UIApplicationDidReceiveMemoryWarningNotification
UIApplicationProtectedDataDidBecomeAvailable
UIApplicationProtectedDataWillBecomeUnavailable
UIApplicationSignificantTimeChangeNotification
UIApplicationUserDidTakeScreenshotNotification
UIApplicationWillChangeStatusBarOrientationNotification
UIApplicationWillChangeStatusBarFrameNotification
UIApplicationWillEnterForegroundNotification
UIApplicationWillResignActiveNotification
UIApplicationWillTerminateNotification
UIContentSizeCategoryDidChangeNotification
阅读全文
0 0
- UIApplication详解 后台运行等
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- UIApplication详解
- Unix后台运行命令详解
- Android O 之行为变更
- maven scope含义的说明
- SSM深入理解
- Cookie
- CSMA/CD技术详解
- UIApplication详解 后台运行等
- 国嵌C语言 · 笔记 1:关键字
- c# 子窗体向父窗体传值
- 关于挖矿软件抽水的相关问题
- Druid0.10.0分布式部署配置
- maven 配置文件详解
- iot-wifi模块,iot解决方案,欢迎技术交流
- php将字符串转为ASCII,php将中文汉字字符串转为ASCII,以及互转
- Tomcat工作原理