一.什么是进程
1.进程是指在系统中正在运行的一个应用程序;
2.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需的全部资源。
例如:
二.iOS进程个数
1.iOS当前桌面操作的进程只有一个,不能像pc一样拥有多桌面进程;
2.后台的进程(程序)如果没有授权很快进入挂起状态,后台进程要有授权才能使用GPS定位,音乐播放等。
三.进程间通信
进程间的跳转
1.先创建两个测试工程
a.被跳转的工程配制如下:
1.配制URL types:
2.接收参数
AppDelegate中添加
-(BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options
{
//从option字典对象取出参数,@"tbb.toProcess2.com”为主动跳转工程的Bundle Identifier
if([[optionsobjectForKey:UIApplicationOpenURLOptionsSourceApplicationKey]isEqualToString:@"tbb.toProcess2.com"]) {
NSLog(@"URL Schemes:%@参数部分%@", [urlscheme], [urlquery]);
NSLog(@"url:%@",url.absoluteString);
}
returnYES;
}
b.跳转工程配制如下:
1.如果你是iOS 9.0以上的系统,当你运行上面的第二个工程后点击按钮,你应该会看到一串类似标题的异常输出,并且应用没有想期望的那样进行跳转。
解决方案:配置scheme到LSApplicationQueriesSchemes
2.跳转代码:
不带参跳转:
NSURL*url = [NSURLURLWithString:@"toProcess://"];
//先判断一下是否可以启动该url
if([[UIApplicationsharedApplication]canOpenURL:url]) {
[[UIApplicationsharedApplication]openURL:url];
}
else{
NSLog(@"跳转有误");
}
带参跳转:
NSURL*url = [NSURLURLWithString:@"toProcess://?name=1Process&2Process"];
//先判断一下是否可以启动该url
if([[UIApplicationsharedApplication]canOpenURL:url]) {
[[UIApplicationsharedApplication]openURL:url];
}
else{
NSLog(@"跳转有误");
}