Android APP新的“优雅”退出方式--EventBus大显身手
最近在研究eventBus。。很多小伙伴不知道他有什么用。。
前篇介绍了EventBus的基本使用
这里简单举一个例子,就是退出APP
转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50629216
相信大家都用过自定义的ActivityManager去管理Activity,退出应用的时候就遍历finish。
今天就给大家分享一种“优雅”的方式,用EventBus来退出APP。
原谅我没有找到 举杯子的优雅表情。
首先 在BaseActivity里面注册,然后写一个onEventMainThread()方法。在里面调用finsh()
BaseActivity
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
public void onEventMainThread(Integer i){
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
然后多加几个Activity作为测试Activity,在最后一个Activity添加退出按钮
MainActivity
public class MainActivity extends BaseActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button) findViewById(R.id.btn);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("wing","main finished");
}
}
Main2Activity
public class Main2Activity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(1);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("wing","main2 finished");
}
}
最后一个Activity按钮的点击时间里,发送一条消息。由所有Activity进行接收,以达到APP退出的效果。观察Log
嗯,确实都退出了。。有木有觉得很 优雅,有没有觉得EventBus很好用呢。
这恰好突出了EventBus的优点啊!短、小、快!!
如果你喜欢我的博客,请关注我~~~
Android APP新的“优雅”退出方式--EventBus大显身手的更多相关文章
- 最优雅退出 Android 应用程序的 6 种方式
一.容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity import java.util.ArrayList; import java.util ...
- 优雅退出 Android 应用程序的 6 种方式
我们先来看看几种常见的退出方法(不优雅的方式) 一.容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity import java.util.Arr ...
- Android退出应用最优雅的方式(改进版)
Android退出应用最优雅的方式(改进版)(转) 我们先来看看几种常见的退出方法(不优雅的方式) 一.容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Act ...
- Android APP 两种用程序拨号的方式
想在APP中添加一个拨号功能该怎样做呢?Android提供了两种方式,一种是ACTION_CALL方式直接拨打,另一种是ACTION_DIAL方式打开系统的拨号界面. 下面我们来做个小例子 首先需要在 ...
- Android App 退出整个应用
在做Android APP 过程中,有退出整个Project的功能,以下就是接受退出整个应用的操作: ActivityManager是用来管理记录每一个Activity,最后统一用来退出结束: pub ...
- 关于android app两次点击返回键退出的处理
现在的android app在开发时,引入了两次点击返回键退出app的设计 为了避免用户误触,这个设计很人性化 中文网上社区有些同学贴了一些实现的例子,我觉得不是很好 代码如下 public bool ...
- Android M新特性之APP Link
The Android M Developer Preview introduces support for App Links, which improves upon existing link ...
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...
- [转]设计一款Android App总结
开发工具的选择 开发工具我将选用Android Studio,它是Google官方指定的Android开发工具,目前是1.2.2稳定版,1.3的预览版也已经发布了.Android Studio的优点就 ...
随机推荐
- iOS Exception Code 之 Magic Number
https://en.wikipedia.org/wiki/Hexspeak iOS Exception Code 之 Magic Number 备忘.
- linux下内存大小、起始地址的解析与修改
在实际的工作中,由于产品型号的不同,经常需要调整linux所管理的内存的大小,而内核在启动阶段,会两次去解析从uboot传递过来的关于内存的信息,具体如下: 一.解析从uboot传递过来的tag(在p ...
- How to work with my desktop and laptop
introduction Two years ago, I got a laptop Lenovo Y500, I am still using it now. Recently, I bought ...
- Dynamics CRM 权限整理二
接上篇http://blog.csdn.net/vic0228/article/details/50510605,继续列举CRM相关权限 prvReadBusinessUnit privilege(I ...
- cuda网格的限制
限制于计算能力有关. 详情 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#compute-capabilities 只 ...
- Java进阶(四十三)线程与进程的区别
Java进阶(四十三)线程与进程的区别 1.线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必 ...
- 阻塞IO服务器模型之单线程服务器模型
单线程服务器模型是最简单的一个服务器模型,几乎我们所有程序员在刚开始接触网络编程(不管是B/S结构还是C/S结构)都是从这个简单的模型开始.这种模型只提供同时一个客户端访问,多个客户端访问必须要等到前 ...
- springMVC源码分析--HandlerInterceptor拦截器(一)
对SpringMVC有所了解的人肯定接触过HandlerInterceptor拦截器,HandlerInterceptor接口给我们提供了3个方法: (1)preHandle: 在执行controll ...
- JAVA面向对象-----抽象类
1抽象类 为什么使用抽象类 1:定义Dog类 有颜色属性和叫的方法 2:定义Bird类 有颜色属性和叫的方法 3:定义其父类Animal 1:颜色的属性可以使用默认初始化值. 2:叫的方法在父类中如何 ...
- [linux RedHat]windows下使用putty远程连接linux 下载JDK和tomcat
本文地址:http://blog.csdn.net/sushengmiyan/article/details/43154543 本文作者:sushengmiyan ------------------ ...