zoukankan      html  css  js  c++  java
  • 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退出程序(二)——利用广播机制
  • 相关阅读:
    C# — WinForm TCP连接之服务器端
    Linq to SQL — Group by
    pytorch model()[] 模型对象类型
    git官网下载太慢解决方法
    财务分析
    python错题集
    SQL 开窗函数 头尾函数 first_value()/last value()不常用
    徐杨老师的公开课关于敏捷算法
    SQL 开窗函数:range和rows的区别
    SQL开窗函数 row_number(),dense_rank(), rank()
  • 原文地址:https://www.cnblogs.com/fengju/p/6336093.html
Copyright © 2011-2022 走看看