识字粗堪供赋役,不须辛苦慕公卿。这篇文章主要讲述EventBus - Android'
s Event Bus相关的知识,希望能为你提供帮助。
文章图片
[1] About EventBus【EventBus - Android' s Event Bus】EventBus is a publish/subscribe event bus for android
文章图片
EventBus...
- simplifies the communication between components
- decouples event senders and receivers
- performs well with Activities, Fragments, and background threads
- avoids complex and error-prone dependencies and life cycle issues
- makes your code simpler
- is fast
- is tiny (~50k jar)
- is proven in practice by apps with 100,000,000+ installs
- has advanced features like delivery threads, subscriber priorities, etc.
dependencies {
compile ‘org.greenrobot:eventbus:3.0.0‘
}
[3] Use EventBus
- Define events:
package com.netcircle.myeventbusdemo;
/**
* Created by sweetgirl on 2017/11/27
*/
public class UserMessage {
public final String mName ;
public final String mPassword;
public UserMessage(String name, String password){
this.mName = name;
this.mPassword = password;
}
}
- Prepare subscribers:
package com.netcircle.myeventbusdemo;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class MainActivity extends AppCompatActivity {private TextView textView;
private EditText input_name;
private EditText input_password;
private Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
initView();
}private void initView(){setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.tv_signup);
input_name = (EditText) findViewById(R.id.input_name);
input_password = (EditText) findViewById(R.id.input_password);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
startActivity(intent);
}
});
}@Subscribe
public void onMessageEvent(UserMessage event) {Toast.makeText(MainActivity.this,"MainActivity"+event.mName+event.mPassword,Toast.LENGTH_SHORT).show();
Log.i("MainActivity"+event.mName,"MainActivity-psw"+event.mPassword);
}@Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
super.onDestroy();
}
}
- Post events:
package com.netcircle.myeventbusdemo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import org.greenrobot.eventbus.EventBus;
public class RegisterActivity extends AppCompatActivity {private EditText et_input_name;
private EditText et_input_password;
private Button btn_registered;
private String name;
private String psw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
et_input_name = (EditText) findViewById(R.id.et_input_name);
et_input_password = (EditText) findViewById(R.id.et_input_password);
btn_registered = (Button) findViewById(R.id.btn_registered);
name = et_input_name.getText().toString();
psw = et_input_password.getText().toString();
btn_registered.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {name = et_input_name.getText().toString();
psw = et_input_password.getText().toString();
Log.i("RegisterActivity-name"+name,"RegisterActivity-psw"+psw);
EventBus.getDefault().post(new UserMessage(name,psw));
Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
startActivity(intent);
}
});
}
}
[4] Demo Completesee Log
11-28 10:39:05.656 25999-25999/com.netcircle.myeventbusdemo I/RegisterActivity-name123: RegisterActivity-pswqwe
11-28 10:39:05.676 25999-25999/com.netcircle.myeventbusdemo I/MainActivity123: MainActivity-pswqwe
推荐阅读
- react native 0.49 android版本热更新
- call()apply()和bind()的异同
- Android 本应用数据清除管理器DataCleanManager
- XMAPP 的安装与配置
- (转)Android Studio Error:Failed to resolve: com.android.support:appcompat-v7:25.1.0解决方案
- apple 下安装mysql 以及 碰到的问题
- express--app.set
- (头条新闻)Cordova+React+OnsenUI+Redux新闻App开发实战教程
- Android 架构师|资料分享 03