常用关于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给我们提供了两类活动 ...
随机推荐
- Docker 执行nginx以及简单进入container
1. docker run -d --name mynginx nginx 运行起来nginx镜像之后 2. docker exec -ti mynginx /bin/bash 能够进入操作界面 发现 ...
- Linux大页内存管理等---菜鸟初学
1. 查看linux的内存情况: free -m 2. 查看是否开启大页的方法: cat /proc/meminfo |grep -i HugePage AnonHugePages: 276480 k ...
- Qt__QMessageBox
转自豆子空间 显示窗口 Qt提供了五个类似的接口,用于显示类似的窗口. QMessageBox::information(NULL, "Title", "Content& ...
- GlusterFS卷的优化
GlusterFS可以通过配置选项来优化卷 配置选项 用途 默认值 合法值 network.ping-timeout 客户端等待检查服务器是否响应的持续时间,节点挂了数据不能写入 42 0-42 ...
- python之input()、while、title()和upper()
代码举例: # 小应用:问卷调查,记录下调查者名字和回答,询问是否继续. # 运用数据字典.while.input().title()和upper(). responses = {} flag = T ...
- /include/caffe/common.cuh(9): error: function "atomicAdd(double *, double)" has already been defined
https://stackoverflow.com/questions/39274472/error-function-atomicadddouble-double-has-already-been- ...
- codeforces365B
The Fibonacci Segment CodeForces - 365B You have array a1, a2, ..., an. Segment [l, r] (1 ≤ l ≤ r ≤ ...
- Navicat的使用技巧
1.快速查找表:选中一个数据库,然后在右侧会弹出如下的搜索框,搜索表名即可 2.快速清空表的内容:在窗口选中一张表,右键,选择“清空表”
- day21 正则表达式
正则表达式 简单的范围的字符组 0-9 匹配所有的数字 a-z 匹配所有的小写字母 A-Z 匹配所有的大写字母 A-Za-z 匹配所有的字母 字符 . 换行符以外的任意字符 \w word 匹配数字, ...
- 【AGC005F】Many Easy Problems (NTT)
Description 给你一棵\(~n~\)个点的树和一个整数\(~k~\).设为\(~S~\)为树上某些点的集合,定义\(~f(S)~\)为最小的包含\(~S~\)的联通子图的大小.\(~n~ ...