Android退出程序(三)——Android事件总线

概述

当我们跟随时间的脚步向前挪动的时候,总能发现原来以前的自己做了一些愚蠢的事情。但,不见得以前就是不好的事情。我在以前的博客中写过两种关于Android中如何退出应用程序的方法。近日,我又发现了一个看似高大上的方法,因为作为程序员的你,使用起来会更加方便。它就像是你得心应手的工具,在需要的时候让你有一种,还好有它的感觉。下面我就使用Android事件总线来对Android退出程序作一个说明。

AndroidEventBus简介

AndroidEventBus是一个Android平台的事件总线框架,它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码更加简洁,耦合性更低,提升了我们的代码质量。但它能做的却不仅限于这些。

使用说明

需求的jar包:

android-support-v4.jar

simple_eventbus.jar

注:以上两个jar包在下面的工程源码下载连接中有包含,大家可以直接前往下载。(PS:当你真的开始使用他们时,你会发现他们是如此的好)

关键代码

BaseActivity.java

public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EventBus.getDefault().register(BaseActivity.this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(BaseActivity.this);
    }

    @Subcriber(tag = "exit_app")
    private void finishApp(String msg) {
        finish();
    }
}

StartActivity.java

public class StartActivity extends BaseActivity {

    private int getLayoutResID() {
        return R.layout.activity_main;
    }

    private Button mGoNextButton = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(getLayoutResID());

        initEvent();
    }

    private void initEvent() {
        initViews();

        setViews();
    }

    private void initViews() {
        mGoNextButton = (Button) findViewById(R.id.activity_main_go_sample_actviity_a_button);
    }

    private void setViews() {
        mGoNextButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                startActivity(new Intent(StartActivity.this, SampleAActivity.class));
            }
        });
    }
}

ExitActivity.java

public class ExitActivity extends BaseActivity {

    private int getLayoutResID() {
        return R.layout.activity_exit;
    }

    private Button mGoNextButton = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(getLayoutResID());

        initEvent();
    }

    private void initEvent() {
        initViews();

        setViews();
    }

    private void initViews() {
        mGoNextButton = (Button) findViewById(R.id.activity_exit_finish_button);
    }

    private void setViews() {
        mGoNextButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                exitApp();
            }
        });
    }

    public void exitApp(){
        EventBus.getDefault().post("", "exit_app");
    }
}

工程源码

http://download.csdn.net/detail/u013761665/8624649

参考连接

Android事件总线还能怎么玩?

相关博文

Android退出程序(一)——单例模式

Android退出程序(二)——利用广播机制

时间: 2024-10-08 12:04:20

Android退出程序(三)——Android事件总线的相关文章

Android EventBus发布/订阅事件总线

做过Android开发都会陆续用到这个开源库EventBus.EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦.下载EventBus的类库源码:https://github.com/greenrobot/EventBus.下面说说简单用法. 本文项目资源下载: 一.先定义一个消息实体类MainSe

ASP.NET ZERO 学习三,事件总线

用于注册和触发客户端的全局事件. 介绍 Pub/sub事件模型广泛用于客户端,ABP包含了一个简单的全局事件总线来 注册并 触发事件. 注册事件 可以使用abp.event.on来注册一个全局事件.一个注册的例子: abp.event.on('itemAddedToBasket', function (item) { console.log(item.name + ' is added to basket!'); }); 第一个参数是事件的唯一名称.第二个是回调函数,当特定事件被触发时,会被调用

Android 开源框架 ( 七 ) 事件总线---EventBus

一.引言          与四大组件之一的BroadCast广播比较,广播主要监听系统级事件,比如网络切换,电池电量等属于进程间的通信,EventBus 是进程内的通信.         了解BroadCast 可以查看该文章:Android 四大组件 (三) BroadcastReceiver 介绍 二.基本使用 引入类库: compile 'com.jakewharton:butterknife:8.5.1' 页面打开时候初始化并注册EventBus //初始化 @Override pro

Android Studio(三)Android Studio项目结构分析

一.了解Android Studio的几种项目结构类型 Android Studio提供了几种项目结构类型 Project Package Android Project Files Problems Productions Test 二.Project External Libraries指项目所依赖的开发环境:java sdk 1.7和android sdk API 19 settings.gradle:里面的内容如下: include ':app', ':ChinaBuyeV3.1.0',

Android进阶 三 android httpClient 支持HTTPS的访问方式

项目中Android https请求地址遇到了这个异常(无终端认证): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 是SSL协议中没有终端认证. 没有遇到过的问题,于是无奈的去找度娘.......,各种问题,各种纠结...... 看了不少大神的博客后得到的解决方案如下: <span style="font-family:Times New Roman;font-size:14px;">/** *

android事件总线(eventbus)开源库发布

 AndroidEventBus 如果你不知道事件总线是什么,那么没有关系,下面我们先来看这么一个场景: 你是否在开发的过程中遇到过想在Activity-B中回调Activity-A中的某个函数,但Activity又不能手动创建对象来设置一个Listener什么的? 你是否想在某个Service中想更新Activity或者Fragment中的界面? 等等之类的组件之间的交互问题-- 一经思考,你会发现Android中的Activity, Fragment, Service之间的交互是比较麻烦的,

事件总线EventBus使用详解

EventBus源码解析 概述 EventBus是针一款对Android的发布/订阅事件总线.它可以让我们很轻松的实现在Android各个组件之间传递消息,并且代码的可读性更好,耦合度更低. 如何使用 (1)首先需要定义一个消息类,该类可以不继承任何基类也不需要实现任何接口.如: 123 public class MessageEvent { ......} (2)在需要订阅事件的地方注册事件 1 EventBus.getDefault().register(this); (3)产生事件,即发送

【第三篇】学习 android 事件总线androidEventbus之发布事件,子线程中接收

发送和接收消息的方式类似其他的发送和接收消息的事件总线一样,不同的点或者应该注意的地方: 1,比如在子线程构造方法里面进行实现总线的注册操作: 2,要想子线程中接收消息的功能执行,必须启动线程. 3,添加tag和不添加tag类似其他. 1 package com.example.mysimpleeventbus; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.simple.eventbus.Even

Android事件总线

Android事件总线还能怎么玩? 顾名思义,AndroidEventBus ( github链接 ,关于我为什么要写这个库请参考<AndroidEventBus ( 事件总线 ) 的设计与实现>)是一个Android平台的事件总线框架,它简化了Activity.Fragment.Service等组件之间的交互,很大程度上降低了它们之间的耦合,使我们的代码更加简洁,耦合性更低,提升了我们的代码质量.但它能做的却不仅限于这些.经过定制,它能完成很多有意思的功能,那么究竟该怎么做呢?就让我们一起往