常用关于Android活动的实践技巧
//知晓当前是在哪一个活动
/* 新建一个BaseActivity类(Java class), 继承自AppCompatActivity
* 重写 onCreate()方法,已有的活动无需再继承自AppCompatActivity, 而是继承自BaseActivity,当跳转到某个活动界面,Toast消息框就会显示该活动名称
*/
package com.example.activitytest; import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast; /**
* Created by admin on 2017/1/22.
*/ public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //采用Toast消息提示的方式, 显示当前是哪个活动名
Toast.makeText(BaseActivity.this, getClass().getSimpleName(), Toast.LENGTH_SHORT).show();
}
/* 随时随地退出程序
* 实现ActivityCollector类作为活动管理器
*/
package com.example.activitytest; import android.app.Activity; import java.util.ArrayList;
import java.util.List; /**
* Created by admin on 2017/1/22.
*/ public class ActivityCollector {
/*
通过一个List来暂存活动
*/
public static List<Activity> activities = new ArrayList<>();
//提供一个addActivity()方法用于从List中移除活动.
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
} //最后提供了一个finishAll()方法用于将List中存储的活动全部销毁掉
//不管在什么地方想退出程序,只需要调用ActivityCollector.finishAll(),就可以了
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
} //在BaseActivity类再修改一下代码
package com.example.activitytest; import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast; /**
* Created by admin on 2017/1/22.
*/ public class BaseActivity extends AppCompatActivity { @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//表明将 当前创建 的活动添加到活动管理器中.
ActivityCollector.addActivity(this);
Toast.makeText(BaseActivity.this, getClass().getSimpleName(), Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
/* 启动活动的最佳写法
* 会遇到问题: 在自己负责的部分需要启动SecondActivity这个活动的功能,
* 却不清楚这个活动需要传递那些数据(项目中接手别人的代码)
* 修改SecondActivity中的代码
*/
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
} /* 这样,即使不用阅读SecondActivity中代码,不去询问负责SecondActivity编
*写的同事, 也可以非常清晰的直达启动SecondActivity需要传递哪些数据.
*此时在活动FirstActivity中启动SecondActivity只需要一小行代码
*/
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
学习书籍:《第一行代码》
常用关于Android活动的实践技巧的更多相关文章
- (转载) Android Studio你不知道的调试技巧
Android Studio你不知道的调试技巧 标签: android studio 2015-12-29 16:05 2514人阅读 评论(0) 收藏 举报 分类: android(74) ...
- 最强 Android Studio 使用小技巧和快捷键
写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...
- 最强 Android Studio 使用小技巧和快捷键总结
最强 Android Studio 使用小技巧和快捷键总结 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android ...
- Android开发最佳实践
Android开发最佳实践 摘要 ●使用 Gradle 和它推荐的工程结构 ●把密码和敏感数据放在gradle.properties ●不要自己写 HTTP 客户端,使用Volley或OkHttp库 ...
- (转)专项:Android 内存泄露实践分析
今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里. 原文发表于:Testerhome: 作者:ycwdaaaa ; 原文链接:https://teste ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- Android游戏开发实践(1)之NDK与JNI开发01
Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- Android活动启动模式
在android中,android活动是以栈的方式进行存储,在栈中的活动不断被重新激活至前台和不断被终止也不断被排序.因此对于栈中的活动管理也是一个比较麻烦的事情. android给我们提供了两类活动 ...
随机推荐
- windows的cmd下的find命令比bash(win10下的Ubuntu的bash)下的grep比较
同样的一个catalina文件,windows的cmd下的find命令比bash下的grep要慢,windows确实占下风啊
- SpringMVC一例 是否需要重定向
在ASP.NET MVC下: return view("List") 和 return RedirectToAction("List") 百度知道的最佳答案: ...
- redi集群测试
redis集群的测试 原文:http://blog.sina.com.cn/s/blog_53b45c4d0102wg10.html 1.测试存取值 客户端连接集群redis-cli需要带上 -c ...
- linux 十个命令
http://www.roncoo.com/article/detail/124514
- CnPack实用功能推荐
已经使用CnPack好几年了,这个插件太好了,现在离开它我都不会写代码了,现在将使用心得与大家分享一下: 1.代码助手非常好用,只需要输入几个字符后,自动出现提示列表,真是懒人的福音呀. 2.代码高亮 ...
- bzoj 2202 [HNOI2010] Bounce 弹飞绵羊(分块)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 思路:和之前那道树分块的题很像,只不过那道是在树上,这道简单些在序列上 还是维护两个数 ...
- servlet表单中get和post方法的区别
Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法.二者主要区别如下: 1.Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据. 2.Ge ...
- Java 关键字final的一小结
* final类不能被继承,没有子类,final类中的方法默认是final的. * final方法不能被子类的方法覆盖,但可以别继承 (方法) * final 成员变量 表示常量,只能被赋值一 ...
- 【BZOJ1879】[SDOI2009]Bill的挑战(动态规划)
[BZOJ1879][SDOI2009]Bill的挑战(动态规划) 题面 BZOJ 洛谷 题解 本来还想着容斥来着,这个数据范围直接暴力就好.设\(f[i][S]\)表示当前填到了第\(i\)位,和\ ...
- bzoj4817/luogu3703 树点涂色 (LCT+dfs序+线段树)
我们发现,这个染色的操作他就很像LCT中access的操作(为什么??),然后就自然而然地想到,其实一个某条路径上的颜色数量,就是我们做一个只有access操作的LCT,这条路径经过的splay的数量 ...