Android四大组件之Activity(2)组件间通信
MainActivity 通过 startActivityForResult 启动 MainActivity2 ,同时传递一个 Bundle 对象给 MainActivity2 ,在 MainActivity2 中通过 getIntent 获取到传递过来的 Bundle ,进而得到 MainActivity 传递过来的String 数据并打印。
在 MainActivity2 中通过 setResult 设置需要传递给 MainActivity 的 Bundle 数据,在 MainActivity 的 onActivityResult 函数中就可以得到相关的 Bundle 数据。
每一个Android应用都有一个 Application 对象,这个 Application 会贯穿整个Android应用,在其中定义的变量,它的生命周期也是和整个应用的生命周期一样。
在 MainActivity 中定义了一个 伴生变量 ,它相当于 Java中的静态变量 ,而在 MainActivity2 中可以获取此静态变量,并对其进行修改。
通过 Fragment 的 setArguments(bundle) 实现 Activity 想 Fragment 传值。
通过 onAttach(activity: Activity) 方法获得 activity 实例,直接调用 activity 中的方法获得数据。
Service 的 onBind 方法需要返回一个 Binder 对象,而这个对象在 ServiceConnection.onServiceConnected 中可以获取,从而实现 Service 和 Activity 之间的通信。
startService 时,传入参数 intent 可以携带部分参数给 Service ,我们可以在 Service 的 onStartCommand 方法中得到 startService 传递过来的 intent 数据。
在service中持有 callback 接口,并在binder中定义方法得到service的实例。activity中实现 ServiceConnection ,通过绑定启动service,这样会回调 ServiceConnection 接口的 onServiceConnected 方法,从而得到service实例,对service中的 callback 进行赋值,在service中可进行耗时操作并见数据通过callback接口,传递给activity进行其他操作。
除了上面说的常用方法外,还有很多其他方法,比如广播机制,事件总汇(eventbus)等。