学习笔记:两个开发过程的小技巧

1.在实际开发中,我们经常会遇到查看当前Activity叫什么名字,是哪个类,当我们去翻阅别的的代码时,真是头疼,所以可已在项目的BaseActivity中写一个得到Activity名称的方法,继承这个Base的Activity的名字都会被打印出来,如下

public class BaseActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("className:", getActivityName());
    }

    private String getActivityName() {
        return getClass().getSimpleName();
    }

} 

运行结果:

2.在开发中可能会遇到随时随地退出程序的时候,这时候该怎么处理呢,可以写一个Activity的管理类,想退出时,依次finish掉Activity

public class ActivityControler {
    private static List<Activity> activityList = new ArrayList<>();

    //添加Actiivty
    public static void addActiivty(Activity activity) {
        activityList.add(activity);
    }

    //删除Activity
    public static void removeActivity(Activity activity) {
        activityList.remove(activity);
    }

    //退出程序时逐个关闭
    public static void removeAllActivity() {
        if (!activityList.isEmpty()) {
            for (Activity activity : activityList) {
                if (!activity.isFinishing())
                    activity.finish();
            }
        }
    }
}

然后在BaseActivity生命周期中做添加和删除操作

public class BaseActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("className:", getActivityName());
    }

    private String getActivityName() {
        return getClass().getSimpleName();
    }
    @Override
    protected void onResume() {
        super.onResume();
        ActivityControler.addActiivty(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityControler.removeActivity(this);
    }
}

如果想在某一个Actiivty中退出程序

public class SecondActivity extends BaseActivity {
    private Button mButton;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        mButton = (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ActivityControler.removeAllActivity();
                //android.os.Process.killProcess(android.os.Process.myPid());
            }
        });
    }
}

如果想保证程序完全退出,可以在finish掉所有Actiivty之后加上结束进程代码android.os.Process.killProcess(android.os.Process.myPid())

时间: 2024-12-05 22:24:47

学习笔记:两个开发过程的小技巧的相关文章

IFE学习笔记&lt;1&gt;之CSS布局小技巧

#main{ max-width:600px; margin:0 auto; } 用max-width替代width,可以使屏幕比600px窄时自动调整内容宽度,而不是出现滚轮.所有主流浏览器包括IE7都支持. *{ -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; } 避免padding和border-width将元素撑宽.免去以往的数学计算,使width一样的元素一样宽.支持IE

安卓权威编程指南 - 第五章学习笔记(两个Activity)

学习安卓编程权威指南第五章的时候自己写了个简单的Demo来加深理解两个Activity互相传递数据的问题,然后将自己的学习笔记贴上来,如有错误还请指正. IntentActivityDemo学习笔记 题目:ActivityA登录界面(用户名.密码.登陆按钮),ActivityB(Edit,返回按键:SubmitButton).A界面输入用户名和密码传到B中,B验证用户输入的用户名和密码,如果错误就返回A,并用Toast 显示用户名和密码错误:如果正确,就在第二个 activity中显示一个Edi

css学习の第六弹—样式设置小技巧

一.css样式设置小技巧>>1.行内元素水平居中是通过给父元素设置 text-align:center 来实现的.html代码:<body> <div class="txtCenter">我想要在父容器中水平居中显示.</div></body> css代码:<style> .txtCenter{ text-align:center; }</style>>>2.块状元素(定宽)通过设置&quo

分享两个BPM配置小技巧

1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使用的是公司电脑,环境都装好了,但是呢,SQL的密码不知道,登陆不了,这个时候先用windows身份登录(不需要密码),登陆后展开安全性->展开登陆名->里面有个sa,右键sa选择属性,弹出属性界面,在属性界面修改密码就成 如图所示

JavaScript DOM编程 学习笔记-两个小示例

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload = function() { //点击每个li节点都弹出其文本值 var liNodes = doc

cpp学习笔记 1一个简单的小程序以及一些的知识点

今天买的cpp到了从今天開始又一次学习cpp如今发现学校发的书真的不怎莫样. <em>#include<stdio.h>//预处理命令 int main()/*第一个被调用的函数.能够比作是一个房子的门()代表main是一个函数. int 指明了返回值的类型*/ { int num;/*声明语句.声明了两件事一有一个名为num的变量二int 说明生命的变量 是一个整形. int是一个keyword num 是一个标示符 */ num = 1;//给变量赋值 printf("

单片机 学习笔记(二)——简单小程序

今天收获了单片机的几个简单小程序:     延时程序: void Delay(unsigned int xx) //输入 xx :ms { while(xx--) { Delay1ms(); } } void Delay1ms() //@11.0592MHz 1ms { unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); } 流水灯程序: #include

Python学习笔记(一)------源于小甲鱼视频学习

Python的高效简洁不必多说,学者必知.接触了各种视频教程后,发现小甲鱼的教学视频很幽默,也比较容易接受,非常感谢小甲鱼!在此顶小甲鱼一下,推荐给各位同仁. 零基础入门学习Python:http://blog.fishc.com/category/python 001主要内容: Python 3.4.3版本的安装:https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi print函数的使用 002主要内容: 1.第一个文字游戏 2.涉及

JSP/Servlet Web 学习笔记 DayThree —— 实现一个登陆小界面

项目说明 利用JSP.HTML.JS实现了一个简易的登陆系统.根据前两天的所学,实现了如下功能: a)用户名.密码验证(不基于数据库,只做一个简单的表单数据获取并验证) b)页面访问次数统计 c)验证用户名.密码为空的提醒弹窗 d)一个简易的根据输入错误次数来实现的防恶意登陆的小弹窗 相关知识点: a)主要利用form的POST方法传递数据,在此之外再基本利用<jsp:param>标签配合<jsp:forward>传递其他的相关数据. b)此外JavaScript可以完美嵌套于JS