Activity Manager

社团管理系统设计图 第一组

旧城冷巷雨未停 提交于 2020-08-14 03:49:54
目录 目录 相关文档 用例图 学生 社长 管理员 用户 时序图 学生 申请参加活动 申请参加社团 申请组成社团 查看社团信息 查看活动信息 社长 申请活动 发布公告 批准参加活动 管理员: 批准换届申请 批准申请活动 成员: 提交职位申请 类图 1.UserManager (用户管理类) 2.AssociationManager (社团管理类) 3.AssApplyManager (社团申请操作类) 4.AnnouncementsManager (通知管理类) 5.ActivityManager (活动管理类) 6.FinancialManager (财务管理) 分工 相关文档 需求文档: 需求 第一次例会报告: 例会报告 阶段性总结一: 总结 文档预览(可能需要梯子): GITBOOK 用例图 学生 社长 管理员 用户 时序图 学生 申请参加活动 非社团成员需提交申请,等待社长审批才可参加活动 申请参加社团 非社团成员需提交申请,等待社长审批才可参加社团 申请组成社团 非社团成员需提交资质证明,可以向管理员提交社团组建申请 查看社团信息 社员及非社员,有不同权限查看,但管理员全体公告,所有学生均可查看 查看活动信息 学生登陆后即可在社团界面查看 社长 申请活动 社长向管理员申请活动 发布公告 社长发布公告,可以选择是社员可见还是全体学生可见 批准参加活动

Apk应用安全加固所需了解的Application启动流程

一曲冷凌霜 提交于 2020-08-11 18:08:07
本文使用Android Q(API 29)版本源代码进行讲解 很多人认为Android应用加载入口是Application的onCreate,实则不然。当点击进入应用时,Zygote进程会fork出一个独立进程, 通过RuntimeInit#findStaticMain找到ActivityThread#main并在ZygoteInit#main中进行调用 郑州哪家不孕不育医院好:http://www.zztjby.com/ // ZygoteInit#main public static void main(String argv[]) { .... Runnable caller; try { .... // 最终会调用到findStaticMain caller = zygoteServer.runSelectLoop(abiList); } catch (Throwable ex) { .... } finally { .... } .... if (caller != null) { caller.run(); } } public class RuntimeInit { protected static Runnable findStaticMain(String className, String[] argv, ClassLoader classLoader) {

Android8.0(API26)之Activity启动流程(显示启动)

做~自己de王妃 提交于 2020-04-26 03:09:27
我们自己的启动Activity方法 调用Activity对象的方法 @Override public void startActivity(Intent intent) { this .startActivity(intent, null ); } 继续调用Activity对象方法 @Override public void startActivity(Intent intent, @Nullable Bundle options) { if (options != null ) { startActivityForResult(intent, - 1 , options); } else { // Note we want to go through this call for compatibility with // applications that may have overridden the method. startActivityForResult(intent, - 1 ); } } 继续调用Activity对象方法 public void startActivityForResult(@RequiresPermission Intent intent, int requestCode) { startActivityForResult(intent,

Java 反射理解以及Android实战

倾然丶 夕夏残阳落幕 提交于 2020-04-07 13:39:11
学会使用 Java 的反射机制,能够让你在实际工作中,如虎添翼。 一 什么是反射 反射指支持程序在运行状态时,都能够获取该类的内部信息,包裹其中的方法,变量等信息,并可于运行时改变方法或者其内部变量。 简单来说,如果某个系统源码中某个类,比如 Recyclerview 的 mFirst 变量,我想动态改变这个值,就可以使用 反射获取到这个值,并改变它。 java 反射的几个主要的类如下: 类名 用途 Class类 编译后的Class对象 Constructor类 类的构造方法 Field类 类的成员变量 Method 类的方法成员 Annotaion 类的注解 在上面的几个类中,比如 Field 类,都有两种重用格式: getField : 表示获取某个共有对象 getDeclaredField:表示获取所有对象,包括 private 方法 对其他类的也使用。 带有Declared修饰的方法可以反射到私有的方法,没有Declared修饰的只能用来反射公有的方法。 二、实例 接着,咱们测试一个简单例子,再讲一些 Android 常常用的几个方法。下面一个简单类,要求动态改变数值。 首先写一个简单的 Bean: public class PersonBean { private int age; public PersonBean(int age) { this.age = age;

简单明了,彻底地理解Binder

╄→гoц情女王★ 提交于 2020-03-03 21:29:08
你是不是看过很多Binder文章但是还是对Binder没有一个深刻理解?不是那些文章讲得不够好,主要是存在两种情况,一种是讲的深,全C代码~,对我这种专做Java的人来说没有心情往下看;另一种是只讲framework层,Binder驱动并没有具体提,导致我们会用Binder,也大致能说的出一些原理,可并没有一个完整的深刻认知。那么接下来让我们一起学习Binder吧,相信接下来的内容会让你有一定的收获~ 什么是Binder 这个问题很多文章都有解释,比如:Binder是Android跨进程通信方式,它实现了IBinder接口,是ServiceManager连接各种Manager(如WindowManager、ActivityManager等)的桥梁。但是我觉得这些说法还是过于抽象。刚接触Binder时,看到这些定义还是一头雾水,只是内心觉得Binder很牛逼、很底层,仅此而已。 那么应该怎么去理解Binder呢?我不打算介绍这个概念,而是介绍Binder是怎么来到Android世界的。我是这样理解的:Android团队想要实现进程之间的通信,需要解决以下几个问题: 如何知道客户端需要调用哪个进程以及该进程中的函数 客户端如何将函数形参发送给远程进程中的函数,以及如何将远程进程函数计算结果返回客户端 如何去屏蔽底层通信细节,让实现客户端调用远程函数就像调用本地函数一样 第一个问题

ADB命令简单使用--查看包名、activity等

微笑、不失礼 提交于 2020-02-26 05:11:32
1、连接设备 adb connect ip 2、查看连接的设备 adb devices 3、安装/卸载Android 应用 adb install packagesname adb uninstall packagesname 4、查看设备安装包名 adb shell pm list packages 5、查看安装包的路劲 adb shell pm path packagename 6、包pull到本地 adb shell pull 包路径 7、aapt解析包信息 aapt dump badging /Users/macbook/Desktop/app.apk aapt d badging packagename 8、有apk的情况下查看activity 8.1 aapt dump xmltree **.apk AndroidManifest.xml aapt dump xmltree /Users/macbook/Desktop/app-dev_V2.7.0_b7fa168_2018-11-16_16-22.apk AndroidManifest.xml 8.2 使用apktool 反编译,反编译后打开AndroidManifest.xml文件 apktool d ***.apk 8.3 aapt dump badging **.apk |findstr "package"

06.Android之消息机制问题

蹲街弑〆低调 提交于 2019-12-09 21:15:25
目录介绍 6.0.0.1 谈谈消息机制Hander作用?有哪些要素?流程是怎样的? 6.0.0.2 为什么一个线程只有一个Looper、只有一个MessageQueue,可以有多个Handler? 6.0.0.3 可以在子线程直接new一个Handler吗?会出现什么问题,那该怎么做? 6.0.0.4 Looper.prepare()能否调用两次或者多次,会出现什么情况? 6.0.0.5 为什么系统不建议在子线程访问UI,不对UI控件的访问加上锁机制的原因? 6.0.0.6 如何获取当前线程的Looper?是怎么实现的?(理解ThreadLocal) 6.0.0.7 Looper.loop是一个死循环,拿不到需要处理的Message就会阻塞,那在UI线程中为什么不会导致ANR? 6.0.0.8 Handler.sendMessageDelayed()怎么实现延迟的?结合Looper.loop()循环中,Message=messageQueue.next()和MessageQueue.enqueueMessage()分析。 6.0.0.9 Message可以如何创建?哪种效果更好,为什么? 6.0.1.3 使用Hanlder的postDealy()后消息队列会发生什么变化? 6.0.1.4 ThreadLocal有什么作用? 好消息 博客笔记大汇总【15年10月到至今】

Android FrameWork层框架

雨燕双飞 提交于 2019-12-05 03:03:57
Android的四层架构相比大家都很清楚,老生常谈的说一下分别为:Linux2.6内核层,核心库层,应用框架层,应用层。我今天重点介绍一下应用框架层Framework,其实也是我自己的学习心得。   Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我们业务上的需求。写APP的人都知道,学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification等。这些都是framework提供给我们的,那么我就详细的讲讲Framework到底在整个Android架构中扮演着什么角色。   Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用。   我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。 用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。 用Java Native Interface调用core lib层的本地方法

Android Activity启动流程(基于Android8.0系统)

∥☆過路亽.° 提交于 2019-12-04 16:14:10
主要对象介绍 ActivityManagerService:负责系统中所有Activity的生命周期; ActivityThread:App的真正入口,当App启动后,会调用其main方法开始执行,开启消息循环队列。是传说中的UI线程,即主线程。与ActivityManagerService配合,一起完成Activity的管理工作; ApplicationThread:用来实现ActivityManagerService与ActivityThread之间的交互。在ActivityManagerService需要管理相关Application中的Activity的生命周期,通过ApplicationThread的代理对象与ActivityThread通讯; ApplictationThreadProxy:是ApplicationThread在服务端的代理对象,负责和客户端的ApplicationThread通讯。AMS就是通过这个代理对象与ActivityThread进行通信的, Android 8.0上以删除该类,采用AIDL接口的方式来进行IPC,实现RPC操作 ; Instrumentation:每一个应用程序都只有一个Instrumentation对象,每个Activity内都有一个对该对象的引用。Instrumentation可以理解为应用进程的管家

Android退出程序的几种方法

我们两清 提交于 2019-12-01 20:48:21
finish() 针对单个Activity,会调用onDestroy方法,关闭当前Activity但并没有释放资源,如果Activity历史栈中不仅仅只包含当前的Activity,那么会回退到之前的Activity System.exit(0) 针对单个Activity,不会调用onDestroy,关闭当前Activity并释放资源,如果Activity历史栈中不仅仅只包含当前的Activity,会报错 android.os.Process.killProcess(android.os.Process.myPid()); 针对单个Activity,不会调用onDestroy,关闭当前Activity并释放资源,如果Activity历史栈中不仅仅只包含当前的Activity,会报错 任务管理器模式 据说这种方式将会结束和程序包关联的一切进程(但是实测下来的效果并不理想) ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); if( android.os.Build.VERSION.SDK_INT < 8){ am.restartPackage(getPackageName()); //需要权限android.permission.RESTART_PACKAGES }else{ am