天天看點

Android EventBus(普通事件/粘性事件)

展示效果

Android EventBus(普通事件/粘性事件)
Android EventBus(普通事件/粘性事件)

添加EventBus導入依賴

主MainActivity方法

public class MainActivity extends AppCompatActivity {
    private Button button_t,button_d;
    private TextView tv_a;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button_d=(Button)findViewById(R.id.button_d);
        button_d.setText("訂閱");
        button_t=(Button)findViewById(R.id.button_t);
        button_t.setText("跳轉到Bctivity");
        tv_a=(TextView)findViewById(R.id.tv_a);
        tv_a.setText("歡迎大家觀看飛鳥96的部落格");
        button_t.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this,MainBctivity.class));
            }
        });
        /*
        * 訂閱事件
        * */
        button_d.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(!EventBus.getDefault().isRegistered(MainActivity.this)) {
                    EventBus.getDefault().register(MainActivity.this);
                }else{
                    Toast.makeText(MainActivity.this, "請勿重複注冊事件", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        /*
        * 取消注冊事件
        * */
        EventBus.getDefault().unregister(MainActivity.this);
    }
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMoonEvent(MessageEvent message){
        tv_a.setText(message.getMessage());
    }
    @Subscribe(sticky = true)
    public void onMoonEvents(MessageEvent message){
        tv_a.setText(message.getMessage());
    }
}
           

主MainBctivity方法

public class MainBctivity extends AppCompatActivity {
    private Button button_f,button_n;
    private TextView tv_b;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_bctivity);
        button_f=(Button)findViewById(R.id.button_f);
        button_f.setText("發送事件");
        button_n=(Button)findViewById(R.id.button_n);
        button_n.setText("粘性事件");
        tv_b=(TextView)findViewById(R.id.tv_b);
        tv_b.setText("MainBctivity");
        /*發送事件*/
        button_f.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EventBus.getDefault().post(new MessageEvent("飛鳥96部落格祝你用的開心!"));
                finish();
            }
        });
        /*粘性事件*/
        button_n.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EventBus.getDefault().postSticky(new MessageEvent("開心開心開開心!!"));
                finish();
            }
        });

    }
}
           

MessageEvent(事件類)

public class MessageEvent {
    private String message;

    public MessageEvent(String message) {
        this.message = message;
    }

    public MessageEvent() {
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
           

activity_main(MainActivity的布局)

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:layout_centerInParent="true"
        android:id="@+id/tv_a" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="17dp"
        android:id="@+id/button_t"
        android:layout_below="@id/tv_a" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="17dp"
        android:id="@+id/button_d"
        android:layout_below="@id/button_t" />
           

activity_main_bctivity(MainBctivity的布局)

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:layout_centerInParent="true"
        android:id="@+id/tv_b" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="17dp"
        android:id="@+id/button_f"
        android:layout_below="@id/tv_b" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="17dp"
        android:id="@+id/button_n"
        android:layout_below="@id/button_f" />
           

謝謝觀看,小編祝大家生活愉快!(多多關注小編,會有非常之多精彩分享哦!)