当前位置: 编程技术>移动开发
本页文章导读:
▪Objective-C中的NSObject对象常常使用到的方法 Objective-C中的NSObject对象经常使用到的方法
/* 用于判断对象是不是参数提供的类型(参数可以是父类的class) 参数示例: [NSObject class]; */- (BOOL)isKindOfClass:(Class)aClass;/* 用于判断对象是.........
▪ 读取plist资料 读取plist文件
//取得mainBundle
NSBundle *bundle = [NSBundle mainBundle];
//取得文件路径
NSString *plistPath = [bundle pathForResource:@"文件名" ofType:@"plist"];
//也可以写成
NSString *plistPath = [[NSBundle mainBundle] path.........
▪ 发通报 PendingIntent 中Intent 内容没有更新 发通知 PendingIntent 中Intent 内容没有更新
<activity android:name="SkyfileActivity"
android:launchMode="singleTask" /> 当我们把Activity 启动模式设置为 singleTask 之后 当我们下次 再去 用Intent 启动 这个.........
[1]Objective-C中的NSObject对象常常使用到的方法
来源: 互联网 发布时间: 2014-02-18
Objective-C中的NSObject对象经常使用到的方法
/*
用于判断对象是不是参数提供的类型(参数可以是父类的class)
参数示例: [NSObject class];
*/
- (BOOL)isKindOfClass:(Class)aClass;
/*
用于判断对象是不是参数提供的类型(参数不可以是父类的class)
参数示例: [NSObject class];
*/
- (BOOL)isMemberOfClass:(Class)aClass;
/*
用于判断对象是否遵守了参数提供的协议
参数示例: @protocol(UIApplicationDelegate)
*/
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
/*
用于判断对象是否拥有参数提供的方法
参数示例: @selector(test) or @selector(testById:)
*/
- (BOOL)respondsToSelector:(SEL)aSelector;
/*
延迟调用参数提供的方法,参数所需参数用withObject传入(类似于ActionScript3.0中的setTimeout函数)
用于判断对象是不是参数提供的类型(参数可以是父类的class)
参数示例: [NSObject class];
*/
- (BOOL)isKindOfClass:(Class)aClass;
/*
用于判断对象是不是参数提供的类型(参数不可以是父类的class)
参数示例: [NSObject class];
*/
- (BOOL)isMemberOfClass:(Class)aClass;
/*
用于判断对象是否遵守了参数提供的协议
参数示例: @protocol(UIApplicationDelegate)
*/
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
/*
用于判断对象是否拥有参数提供的方法
参数示例: @selector(test) or @selector(testById:)
*/
- (BOOL)respondsToSelector:(SEL)aSelector;
/*
延迟调用参数提供的方法,参数所需参数用withObject传入(类似于ActionScript3.0中的setTimeout函数)
delay单位:秒
*/
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
*/
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
[2] 读取plist资料
来源: 互联网 发布时间: 2014-02-18
读取plist文件
//取得mainBundle NSBundle *bundle = [NSBundle mainBundle]; //取得文件路径 NSString *plistPath = [bundle pathForResource:@"文件名" ofType:@"plist"]; //也可以写成 NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"文件名" ofType:@"plist"]; //读取到一个NSDictionary NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; //读取到一个NSArray NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];
[3] 发通报 PendingIntent 中Intent 内容没有更新
来源: 互联网 发布时间: 2014-02-18
发通知 PendingIntent 中Intent 内容没有更新
最后一个参数就是 FLAG,这个FLAG 的 意思就是:如果系统中已存在该PendingIntent对象,那么系统将保留该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。这个非常有用,例如之前提到的,我们需要在每次更新之后更新Intent中的Extras数据,达到在不同时机传递给MainActivity不同的参数,实现不同的效果。
就是 Intent里边的数据没更新而已, 很2个问题 搞了很久 才发现原来加个FLAG 就行了,有点伤不起了。!!
代码片段
更多关于PengingIntent 的 大家可以看看 这里。 http://www.7dot9.com/2011/04/android-pendingintent%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B0%8F%E8%BF%B7%E6%83%91/
<activity android:name="SkyfileActivity" android:launchMode="singleTask" />当我们把Activity 启动模式设置为 singleTask 之后 当我们下次 再去 用Intent 启动 这个 Activity 的时候 就不会去调用 onCreate方法 而是去调用onNewIntent()方法 然后把Intent中的数据传给它 , 前几天遇到的问题是 当我 发一个通知给状态栏 然后点击这个通知 自然会执行 PendingIntent 里边的Intent。 但是 在Activity那边的 onNewIntent()方法里边 得到的数据 不是最新的 也就是说 是 第一次的 以后 不管我怎么点通知 它都 是 第一次点击通知得到的数据,当以后再点击通知的时候其实 数据已经变了 但是 onNewIntent()方法总是得不到最新的数据, 无语了很久, 去 农民伯伯翻译组 发问得解 需要给 PendingIntent 加一个 FLAG
PendingIntent contentIntentBegin = PendingIntent.getActivity( notificationContext, 0, inStart, PendingIntent.FLAG_UPDATE_CURRENT);
最后一个参数就是 FLAG,这个FLAG 的 意思就是:如果系统中已存在该PendingIntent对象,那么系统将保留该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。这个非常有用,例如之前提到的,我们需要在每次更新之后更新Intent中的Extras数据,达到在不同时机传递给MainActivity不同的参数,实现不同的效果。
就是 Intent里边的数据没更新而已, 很2个问题 搞了很久 才发现原来加个FLAG 就行了,有点伤不起了。!!
代码片段
public void showNotiMessageBegin(String message, int requestCode, String itemid) { notification = new Notification(R.drawable.skyfile_upload_noti, message, System.currentTimeMillis()); if (requestCode == 1 && notification.contentIntent == null) { int index = itemid.lastIndexOf("/"); final String backPath1 = itemid .substring(0, index == 0 ? 1 : index); Intent inStart = new Intent(notificationContext, SkyfileActivity.class); inStart.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); inStart.setData(Uri.parse(MetaDataView.class.getName())); inStart.putExtra(MetaDataView.BUNDLE_PATH, backPath1); PendingIntent contentIntentBegin = PendingIntent.getActivity( notificationContext, 0, inStart, PendingIntent.FLAG_UPDATE_CURRENT); notification.contentIntent = contentIntentBegin; notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.setLatestEventInfo(notificationContext, UPLOATTITLE, message, contentIntentBegin); notificationMgr.notify(1, notification); } else { notification.contentIntent.cancel(); } }
更多关于PengingIntent 的 大家可以看看 这里。 http://www.7dot9.com/2011/04/android-pendingintent%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B0%8F%E8%BF%B7%E6%83%91/
最新技术文章: