消息传递之:IOS NSNotificationCenter,Android EventBus;
2015-08-28 19:38
776 查看
文章来自:http://blog.csdn.net/intbird
1,初始化程序入口
2,注册监听和处理方法
3,调用事件方法
动态注册广播接收器,处理 onReceiver(),
通过sendBroadcast(intent)方法发送广播;
https://github.com/greenrobot/EventBus/blob/master/HOWTO.md
0,上图
1,gradle dependencies
2,注册监听,必须注意 @Subscribe public void method(){}
3,发送事件
文章来自:http://blog.csdn.net/intbird
以上demo
IOS:https://github.com/intbird/IOSNSNotificationCenter
android:https://github.com/intbird/ANDIntbirdEventBus
IOS
IOS系统自带 NSNotificationCenter
0,上图1,初始化程序入口
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { MainViewController* mainView = [[MainViewController alloc] init]; mainView.title = @"Delegate"; self.navigatarController = [[UINavigationController alloc]init]; [self.navigatarController pushViewController:mainView animated:YES]; self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; self.window.rootViewController = self.navigatarController; [self.window makeKeyAndVisible]; return YES; return YES; }
2,注册监听和处理方法
#import "MainViewController.h" #import "EventViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onEvent:) name:@"EVENT_KEY" object:nil]; } -(void)onEvent:(NSNotification *)notifi{ NSString * message = notifi.name ; message = [message stringByAppendingString:notifi.object]; _labText.text = message; UIAlertController * alert = [UIAlertController alertControllerWithTitle:notifi.name message:notifi.object preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction * alertCacel = [UIAlertAction actionWithTitle:@"Cacel" style:UIAlertActionStyleCancel handler:nil]; [alert addAction:alertCacel]; [ self presentViewController:alert animated:YES completion:nil]; } - (IBAction)sendMessage:(id)sender { EventViewController * eventView = [[EventViewController alloc] init]; [self.navigationController pushViewController:eventView animated:YES]; } @end
3,调用事件方法
#import "EventViewController.h" @interface EventViewController () @end @implementation EventViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. } - (IBAction)sendMessage:(id)sender { [[NSNotificationCenter defaultCenter] postNotificationName:@"EVENT_KEY" object:@"post a message!"]; } @end
Andorid使第三方EventBus
先看下系统自带的BroadcastReceiver
Anrdoid四大组件之一的BroadcastReceiver动态注册广播接收器,处理 onReceiver(),
通过sendBroadcast(intent)方法发送广播;
private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(action)){ } } }; IntentFilter filter = new IntentFilter(); filter.addAction(action); registerReceiver(receiver, intentFilter);
再看下EventBus
官方demo说明:https://github.com/greenrobot/EventBus/blob/master/HOWTO.md
0,上图
1,gradle dependencies
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.1' compile 'de.greenrobot:eventbus:3.0.0-beta1' }
2,注册监听,必须注意 @Subscribe public void method(){}
public class MainActivity extends AppCompatActivity { TextView tvText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); findViewById(R.id.button_send).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, EventBusActivity.class)); } }); tvText = (TextView)findViewById(R.id.textView); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } @Subscribe public void onEvent(EventBusEvent event) { String msg = event.getMessage(); tvText.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } }
3,发送事件
public class EventBusActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_event); findViewById(R.id.button_send).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EventBus.getDefault().post(new EventBusEvent("post a message!")); } }); } }
文章来自:http://blog.csdn.net/intbird
以上demo
IOS:https://github.com/intbird/IOSNSNotificationCenter
android:https://github.com/intbird/ANDIntbirdEventBus
相关文章推荐
- Android虚拟机无法正常工作几例及解决办法
- android移动开发环境搭建与配置
- Android-Activity的四状态、七生命周期、和四启动模式
- (七)android开发中两种方式监听短信的原理和实现
- Unexpected namespace prefix "xmlns" found for tag LinearLayout——android开发之xml布局文件
- Android核心服务解析篇(一)——下载Android源代码
- Android通过PHP连接MySQL数据库(插入)
- Attribute is missing the Android namespace prefix——android开发之xml布局文件
- Android应用程序用户界面(三)
- Android Studio 获取证书指纹SHA1
- Android GridView中设置了Button以后就不能响应OnItemClick()
- Android百度地图定位demo
- android ListView 左滑和IOS一样的效果
- 导入Github上Android studio 项目
- 来自官方的Android数据绑定(Data Binding)框架②
- android 友盟自动更新
- 在 Android studio 中 配置Gradle 做到 “根据命令行提示符生成指定versionCode, versionName,指定apk的打包输出路径”
- Android布局在android:gravity 和 android:layout_Gravity差别
- 高通8x26 Android sensor兼容方法
- Android-StepsView