Android四大组件——Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译

时间:2022-01-29 16:44:20

Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译


步骤一:生命周期

Android四大组件——Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译

onCreate():当activity被创建的时候调用,通常会在这个函数中完成activity的初始化操作,如设置布局、初始化视图、绑定事件等

onStart():当activity变成用户可见的时候调用,此时activity还处于不可见状态

onResume():界面获取焦点的时候调用的方法,此时activity一定位于返回栈的栈顶,并且处于运行状态

onPause():界面失去焦点,控件不能得到点击事件,通常在这个函数中将一些消耗CPU的资源释放掉,以及保存一些关键的数据

onStop():界面不可见,在activity完全不可见时调用

onDestroy():activity销毁

onRestart():当用户按Home键返回桌面,并重新进入activity时被调用


步骤二:启动模式

standard启动模式:默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同的Activity叠加。
singletask启动模式:开启一个ActivityB的时候检查任务栈里面是否有这个ActivityB的实例存在,如果存在的话,清空这个任务栈ActivityB上面的所有的Activity,复用这个ActivityB。
singletop启动模式:如果发现任务栈的栈顶已经存在这个Activity,再去开启Activity的时候,就不去重新创建新的Activity而是复用这个栈顶已经存在的Activity。
singleinstance启动模式:开启一个新的任务栈,任务栈里面只有一个Activity的实例存在,如果这个Activity被开启,把这个任务栈放在前面,如果开启了新的别的Activity,则别的Activity所在的任务栈会被放在前面。极端的说,在整个手机的操作系统里面只会有一个实例存在。
附上图,方便理解
Android四大组件——Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译

步骤三:显隐式意图

1. 显式意图

开启同个应用的界面,第一种方式

        Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
开启同个应用的界面,第二种方式
        Intent intent = new Intent();
intent.setClassName(this, "com.handsome.boke.DialogActivity");
startActivity(intent);
开启系统自带的应用(开启短信应用)
        Intent intent = new Intent();
intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
startActivity(intent);

2. 隐式意图

        Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

步骤四:杀死进程

1. 添加manifests权限

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
2. 代码编写
        int pid = android.os.Process.myPid();        //方式一:只能自杀,不能他杀        android.os.Process.killProcess(pid);        //方式二:只能他杀,不能自杀        ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);        am.killBackgroundProcesses("com.hensen.DialogActivity");


步骤五:杀死所有Activity

        //伪代码
List<Activity> list = new ArrayList<>();//在Application全局变量里面
list.add(this);
for (Activity activity : list) {
activity.finish();
}
list.remove(this);


步骤六:安装及反编译

1. 安装:

        Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory("android.intent.category.DEFAULT");
intent.setDataAndType(Uri.fromFile(new File("文件路径")), "application/vnd.android.package-archive");
startActivity(intent);


2. 反编译:

1. apktool反编译可查看其manifests文件

在apkTool文件夹路径下面打开cmd,输入 apktool d C://....//你需要编译文件.apk

2. Dex2jar反编译可查看源代码

在dex2jar文件夹路径下面打开cmd,输入dex2jar C://....//你需要编译文件.apk,生成一个jar包

3. jd-gui查看反编译源码

在Dex2jar生成的jar包中,在jd-gui.exe打开

apkTool和Dex2jar反编译工具下载

Android四大组件——Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译