adb and 软件架构笔记

news2024/11/24 16:29:41

Native Service,这是Android系统里的一种特色,就是通过C++或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C++代码生成的是Native代码(机器代码),于是叫Native Service。

native服务就是用c++写的系统服务,通过init进程启动,可以实现binder接口供client调用。

JAR包 类似于动态链接库.so。

content provider 提供一个URI(content:com.abc.123/people) 与数据库相连实现增删改查,暴露给其他应用或进程。通过Resulver访问。

adb root 获取权限

adb pull 从android 设备下载文件

adb shell 进入设备命令行

adb install abc.apk 安装apk

adb devices 确认是否连接

adb shell pm list package  列出所有的应用的包名 (-s:列出系统应用  -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置  -i:列出应用包名及其安装来源)

adb shell  am start +包名/.Activity (要启动的Activity)

例如adb shell am start com.android.settings/.MainActivity

关闭App

cmd命令行中执行 adb shell am force-stop app包名

例如:adb shell am force-stop com.android.settings关闭系统设置;

cmd命令行中执行 adb shell pm clear app包名

例如adb shell pm clear app com.android.settings 关闭系统设置

  1. MVC (Model View Controller)

MVC 模式将程序分为三个部分:模型(Model)、视图(View)、控制器(Controller)。

  • Model 模型层: 业务数据的处理和存储,数据更新后更新;

  • View 视图层: 人机交互接口,一般为展示给用户的界面;

  • Controller 控制器层 : 负责连接 Model 层和 View 层,接受并处理 View 层触发的事件,并在 Model 层的数据状态变动时更新 View 层;

  • MVC 模式的目的是通过引入 Controller 层来将 Model 层和 View 层分离,分层的引入是原来大锅烩方式的改进,使得系统在可维护性和可读性上有了进步。

  • MVC 模式提出已经有四十余年,MVC 模式在各个书、各个教程、WIKI 的解释有各种版本,甚至 MVC 模式在不同系统中的具体表现也不同,这里只介绍典型 MVC 模式的思路。

典型思路是 View 层通过事件通知到 Controller 层,Controller 层经过对事件的处理完成相关业务逻辑,要求 Model 层改变数据状态,Model 层再将新数据更新到 View层。示意图如下:

MVP (Model View Presenter)

MVP 模式将程序分为三个部分:模型(Model)、视图(View)、管理层(Presenter)。

  • Model 模型层: 只负责存储数据,与 View 呈现无关,也与 UI 处理逻辑无关,发生更新也不用主动通知 View;

  • View 视图层: 人机交互接口,一般为展示给用户的界面;

  • Presenter 管理层 : 负责连接 Model 层和 View 层,处理 View 层的事件,负责获取数据并将获取的数据经过处理后更新 View;

  • MVC 模式的 View 层和 Model 层存在耦合,为了解决这个问题,MVP 模式将 View 层和 Model 层解耦,之间的交互只能通过 Presenter 层,实际上,MVP 模式的目的就是将 View 层和 Model 层完全解耦,使得对 View 层的修改不会影响到 Model 层,而对 Model 层的数据改动也不会影响到View 层。

典型流程是 View 层触发的事件传递到 Presenter 层中处理,Presenter 层去操作 Model 层,并且将数据返回给 View层,这个过程中,View 层和 Model 层没有直接联系。而 View 层不部署业务逻辑,除了展示数据和触发事件之外,其它时间都在等着 Presenter 层来更新自己,被称为「被动视图」。

示意图如下:

MVVM (Model View ViewModel)

MVVM 模式将程序分为三个部分:模型(Model)、视图(View)、视图模型(View-Model)。

和 MVP 模式类似,Model 层和 View 层也被隔离开,彻底解耦,ViewModel 层相当于 Presenter 层,负责绑定 Model 层和 View 层,相比于 MVP 增加了双向绑定机制。

结构图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1185644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux C语言进阶-D14指针函数

指针函数&#xff1a;指一个函数的返回值为地址量的函数 <数据类型>* <函数名称>&#xff08;<参数说明>&#xff09; { 语句序列; } 返回值&#xff1a;全部变量的地址、静态变量的地址、字符串常量的地址、堆上的地址 注意&#xff1a;不可返回局部变量…

Redis Java 开发简单示例

文章目录 一、概述二、Jedis 开发示例2.1 导入 maven 依赖2.2 使用连接池读写2.3 使用集群读写2.4 完整示例代码2.5 测试集群的搭建 三、Lettuce 开发示例3.1 导入 maven 依赖3.2 读写数据 四、Spring Boot Redis 开发示例4.1 导入 maven 依赖4.2 配置Redis服务地址4.3 基于 Re…

52基于MATLAB的希尔伯特Hilbert变换求包络谱

基于MATLAB的希尔伯特Hilbert变换求包络谱&#xff0c;对原始信号进行初步滤波&#xff0c;之后进行包络谱分析。可替换自己的数据进行优化。程序已调通&#xff0c;可直接运行。 52的尔伯特Hilbert变换包络谱 (xiaohongshu.com)

混沌系统在图像加密中的应用(基于哈密顿能量函数的混沌系统构造1.1)

混沌系统在图像加密中的应用&#xff08;基于哈密顿能量函数的混沌系统构造1.1&#xff09; 前言一、基于广义哈密顿系统的一类混沌系统构造1.基本动力学特性分析2.数值分析 待续 前言 本文的主题是“基于哈密顿能量函数的混沌系统构造”&#xff0c;哈密顿能量函数是是全文研…

【Git】快速入门安装及使用git与svn的区别常用命令

一、导言 1、什么是svn&#xff1f; SVN是Subversion的简称&#xff0c;是一个集中式版本控制系统。与Git不同&#xff0c;SVN没有分布式的特性。在SVN中&#xff0c;项目的代码仓库位于服务器上&#xff0c;团队成员通过向服务器提交和获取代码来实现版本控制。SVN记录了每个文…

Go 接口:nil接口为什么不等于nil?

本文主要内容:深入了解接口类型的运行时表示层。 文章目录 一、Go 接口的地位二、接口的静态特性与动态特性2.1 接口的静态特性与动态特性介绍2.2 “动静皆备”的特性的好处 三、nil error 值 ! nil四、接口类型变量的内部表示第一种&#xff1a;nil 接口变量第二种&#xff1a…

JDBC(二)

第4章 操作BLOB类型字段 4.1 MySQL BLOB类型 MySQL中&#xff0c;BLOB是一个二进制大型对象&#xff0c;是一个可以存储大量数据的容器&#xff0c;它能容纳不同大小的数据。 插入BLOB类型的数据必须使用PreparedStatement&#xff0c;因为BLOB类型的数据无法使用字符串拼接写…

Hundred Finance 攻击事件分析

背景知识 Hundred Finance 是 fork Compound 的一个借贷项目&#xff0c;在2023/04/15遭受了黑客攻击。攻击者在发起攻击交易之前执行了两笔准备交易占据了池子&#xff0c;因为发起攻击的前提是池子处于 empty 的状态&#xff08;发行的 hToken 数量为 0&#xff09;。 准备交…

​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】 课本里章节里所有蓝色字体的思维导图

CAN 协议常见面试题总结

0.讲一下CAN通讯的过程 第一段&#xff1a;需要发送的通讯设备&#xff0c;先发送一个显性电平0&#xff0c;告诉其他通讯设备&#xff0c;需要开始通讯。 第二段&#xff1a;就是发送仲裁段&#xff0c;其中包括ID帧和数据帧类型&#xff0c;告诉其他通讯设备&#xff0c;需…

记录一次校园CTF--wp

一.第一题简单nc 这题直接nc 地址端口即可得到flags没有套路 二.第二题pwn:ezstack 这是一题栈溢出题目&#xff0c;查看保护&#xff1a; 没有开启PIE&#xff0c;运行下查看效果&#xff1a; 题目是一个文字购物游戏。 接着扔进IDA中分析&#xff1a; 在主函数中我们找到…

C++ string赋值和添加值

在MFC中使用C的string&#xff0c;要先#include <string>&#xff0c;然后&#xff0c;std::string s2("") 这样就可以了&#xff1b; void CStrnewView::OnDraw(CDC* pDC) {CStrnewDoc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for n…

【Redis】list常用命令内部编码使用场景

文章目录 前置知识列表类型的特点 命令LPUSHLPUSHXRPUSHRPUSHXLRANGELPOPRPOPLINDEXLREMLINSERTLTRIMLSETLLEN 阻塞版本命令BLPOPBRPOP 命令总结内部编码测试内部编码 使用场景消息队列分频道的消息队列 模拟栈和队列 前置知识 列表类型是⽤来存储多个有序的字符串&#xff0c…

项目管理之如何出道(上)

前言 终于有时间更新了&#xff0c;大家是不是等不及了&#xff1f;那么书接上文&#xff0c;言归正传。 各位盆友&#xff0c;时间之轮已划入夜晚&#xff0c;尝试静下心来&#xff0c;思考一番。 Q1&#xff1a;是否曾经期待自己做一名项目经理&#xff0c;干了几年的coder甚…

MinGW32丢失dll文件

问题现象 执行Makefile的时候&#xff0c;突然出现这个提示&#xff0c;还有好几个类似的&#xff0c;提示我找不到dll文件&#xff0c;建议重装。 问题分析 重装软件 最直接的办法肯定是按照建议来重装&#xff0c;但是发现重装了好几次&#xff0c;不是缺这个就是缺那个&a…

每天一道算法题:17. 电话号码的字母组合

难度 中等 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits “23” …

换服还是掀桌?哪条才是程序员的出路?

站在时代的风口浪尖&#xff0c;猪都能起飞。 大数据互联网正是时代的宠儿&#xff0c;IT行业的发展也正如火如荼。 人人都眼红程序员的高薪资&#xff0c;认为他们吃着时代的红利。 但是三百六十行&#xff0c;行行出社畜。”996“也好&#xff0c;甚至"007"也罢…

龙迅LT6911GXC,HDMI 2.1转4 PORT MIPI/LVDS支持分辨率高达8K30HZ

描述&#xff1a; LT6911GXC 是一款面向 VR / 显示应用的高性能 HDMI2.1 至 MIPI 或 LVDS 芯片。 高清遥控器RX作为高清电脑中继器的上游&#xff0c;可与其他芯片的高清电脑TX合作&#xff0c;实现直译台功能。 对于 HDMI2.1 输入&#xff0c;LT6911GXC 可配置为 3/4 通道。 …

2023最新版JavaSE教程——第2天:变量与运算符

目录 一、关键字(keyword)二、标识符(identifier)三、变量3.1 为什么需要变量3.2 初识变量3.3 Java中变量的数据类型3.4 变量的使用3.4.1 步骤1&#xff1a;变量的声明3.4.2 步骤2&#xff1a;变量的赋值 四、基本数据类型介绍4.1 整数类型&#xff1a;byte、short、int、long4…

OmniFocus Pro for Mac(GTD时间管理软件) OmniFocus Mac版

OmniFocus Pro 3 for Mac 中文激活版是一款功能强大且灵活的 GTD 时间管理工具&#xff0c;可为您提供无干扰的环境&#xff0c;帮助您可以轻松地从邮件&#xff0c;消息&#xff0c;Safari 和任何其他第三方应用程序中安排任务&#xff0c;编写备注和剪辑信息。您可以快速轻松…