热恋Android (3 -- Android项目结构)

Android项目结构讲解【超详细】 本文主要讲解Android的Project查看模式和Android查看模式下的项目结构与Gradle的相关配置 阅读详情

今天学习Android项目结构,了解一下Andorid项目有哪些部分构成。

一个Andorid项目可以包含(但不一定全部包含)下面部件: 

 

  •  Activity
  •  Broadcast Intent Receiver
  •  Service
  •  Content Provider
  •  

    在Andorid项目中,AndroidManifest.xml文件记录了该项目使用了哪些部件。下面是一个AndoidManifest.xml的例子:

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3.         package="com.my_domain.app.helloactivity">
    4.         
    5.     <application android:label="@string/app_name">
    6.     
    7.         <activity android:name=".HelloActivity">
    8.             <intent-filter>
    9.                 <action android:name="android.intent.action.MAIN"/>
    10.                 <category android:name="android.intent.category.LAUNCHER"/>
    11.             </intent-filter>
    12.         </activity>
    13.         
    14.     </application>
    15.     
    16. </manifest>

     

    下面分别介绍一下这四个部件:

     

    1. Activity(场景)

    一个Activity通常是一个项目中的单一画面。每个Activity在编程时对应一个继承自android.app.Activity的JAVA类。该类表示一个包含视图(View)和行为(respond to events)的用户界面。大多数项目包含多个画面。但在同一时刻,只有一个当前画面供用户操作和查看。在程序运行过程中,随着一个新的Activity的开始,画面要进行切换。一个Activity可以返回一个值,以便下个Activity对该值进行处理。

    举个例子,假设有个通讯录程序,其中包括修改联系人信息的功能。这个功能的操作流程如下:

        Activity1: 用户在功能菜单选择修改联系人

        Activity2: 显示联系人列表,如果用户选择取消,回到Activity1; 如果用户从中选择了要修改的联系人,进入Activity3

        Activity3: 显示修改联系人画面,用户在该画面完成修改

        回到Activity2

    在这个过程中,Activity2会将选择的联系人作为返回值交给Actity3。在切换Activity时,每当打开一个新画面,上个画面会被Push到历史堆栈中,以便执行回退动作。比如上个例子中,Activity2中,可以回退到Activity1。可以从一个画面直接回退到之前访问的任何画面,比如当用户选择"Home",直接回退到主场景。

    在上面的XML代码中,<activity>元素中包含了一个 <intent-filter> 元素。这个intent-filter又是什么呢?Intent表示一个项目想要做什么,其中包括两个重要部分:action(行为)和基于行为的数据。一般的,Action: MAIN (程序入口),VIEW, PICK, EDIT, 等。所有的数据用URI表示。比如在联系人信息画面,你可以通过向该页面指定一个VIEW Action并且将表示联系人的URI和这个Action"关联"起来。这个"关联"关系,通过IntentFilter类来表示。这样,在<activity>元素中,包含一个<intent-filter>元素,并在其中完成Action及其数据的关联,就是这样,构成了一个完整的Activity。

    要完成不同画面的定向,就要靠Intent了。如果要定向到指定的Intent,就调用Activity对象的startActivity(myIntent)方法。当调用该方法时,系统会在所有的Intent-filter中查找最匹配的Intent,因为一个Activity关联了一个Intent,所以调用startActivity(myIntent)方法的结果就是从一个Activity切换到另一个Activity。当另一个Acitvity被激活时,它的startActivity()方法会被调用。

     

    2.Broadcast Intent Receiver

    使用BroadcastReceiver你可以在程序中感应系统广播Intent。BroadcastReceiver并不提供用户界面,只能通过NotificationManager通知用户某些事件发生了,比如电话铃响了,有新的可用数据连接等。BroadcastReceiver有两种注册方式:一种是通过 AndroidManifest.xml,另一种是通过Context.registerReceiver()进行注册。一个程序可以注册多个BroadcastReceiver。如果你需要的话,当某个程序注册的BroadcastReceiver被触发时,该程序可以自动启动,以处理BroadcastReceiver发出的事件。

    一个程序不但可以使用BroadcastReceiver接收广播Intent。而且可以向系统广播Intent。要向系统广播Intent,你只需调用Context.sendBroadcast()方法即可。

     

    3.Service

    一个Service是常驻系统的,没有UI(用户界面)的。举个例子,你可以在手机上一边听音乐,一边编辑短信,此时音乐播放器并没有显示界面,而是在后台运行。要实现这样的功能,就要用到Service了。当需要后台运行时,这个音乐播放器程序可以调用Context.startService()方法让程序继续在后台运行,直到程序运行完毕。

     

    4.Content Provider

    有的程序需要存储数据的地方,比如文件、SQLite数据库,或其他机制。Content Provider允许你的程序可以和其他程序共享数据。一个Content Provider实际上就是一个包含了可以供其他程序访问共享数据的方法的类。

     

    以上四类中,适用于不同的程序,也可以混合适用,以达到丰富的效果。当然,最常用的还是Activity。

Android项目基础架构。包含架构分层、基本工具层等 采用二次封装后的okhttp3+Gson.(没有使用retrofit,考虑到服务端提供的API可能不会很标准) 基本功能: POST请求 GET请求 上传文件&进度监听 下载文件&进度监听 返回可以选择Gson格式 取消某个context的所有网络请求 并且将该功能模块独立为MyOkhttp,可以重复使用. 立即下载

相关推荐

【板栗糖GIS】新装ArcGIS必调的12个隐藏设置——【效率翻倍指南】

本文详细介绍了新装ArcGIS后必调的12个隐藏设置,涵盖性能优化、路径管理、显示调校、工作流定制等方面,帮助用户显著提升GIS工作效率。从关闭后台地理处理到启用硬件加速,再到个性化快捷键配置,这些实用技巧能让ArcGIS运行更流畅,操作更便捷。

weixin_42524945的博客 546

Android开发-Android项目结构

文章目录前言一、Gradle1.1什么是Gradle?1.2Gradle是一个构建工具,那么为什么要用构建工具?二、项目结构三、app目录结构四、res目录结构总结 前言 Android工程的项目结构比较复杂,在进行Android开发前必须对Android项目的工程结构有一个清晰的认识,这样才能在开发道路上走的轻松。 一、Gradle 1.1什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy

qq_52173163的博客 5797

汇编语言与USB量产工具开发解析

本文解析了汇编语言在USB量产工具开发中的应用。USB量产工具主要用于批量配置USB设备,包括固件烧录、格式化、信息写入等功能。汇编语言在底层硬件操作中发挥关键作用,如直接控制USB寄存器、编写驱动和精确时序控制。文章通过伪代码示例展示了USB控制器初始化和固件烧录流程,并强调硬件依赖性、安全机制和时序精度等注意事项。开发需严格遵循芯片手册,建议优先使用厂商SDK,避免设备损坏风险。

RulesChen的博客 1025

1.Android学习之Android项目结构

1.Android项目结构 正在上传…重新上传取消 1.manifests节点 manifests节点用于显示Android应用程序的配置文件。 通常情况下,每个Android应用程序必须包含一个AndroidManifest.xml文件,位于manifests节点下。它是整个Android应用的全局描述文件。在该文件内,需要注明应用的名称、使用图标、Activity和Service等信息,否则程序不能正常启动。 正在上传…重新上传取消 AndroidManifest.xml文件中的重要元素及说

ttycr的博客 3945

第一章 Cheat Enginee(CE)使用指南

Cheat Engine核心功能详细说明(以植物大战僵尸为例) 教你修改单机游戏。

m0_74545731的博客 1万+

TIA博途中通过UDT实现IO地址映射到DB块中的具体方法

TIA博途中通过UDT实现IO地址映射到DB块中的具体方法

Robot_PLC_HMI_Automation 1万+

Android应用开发(3)App的工程结构

本章介绍App project的基本结构和其常用配置。 App project是怎样的组织结构又是怎样配置的。

zsyf33078的专栏 1554

AWS DevOps Agent 完全指南

AI 驱动的 SRE 队友,7×24 自主调查告警、定位根因、生成修复方案、预防未来故障。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 385

手把手教你搭建android项目框架(一)选择篇

本系列旨在帮助android新人搭建属于自己的项目框架。由于篇幅较长,本人时间有限,因 本篇搭建框架适用于中大型项目。此系列持续更新,直到完成一个完整项目。

flowerdanceX的博客 1250

论文必备 - YOLO26统计数据集中大、中、小目标数量,附完整代码和详细使用步骤

数据集是由微软开发维护的大型图像数据集。数据集标注类型对应任务包括物体检测、关键点检测、实例分割、stuff分割(没有特定形状的物体),全景分割人体关键点, 人体密度检测等。官网数据规模和样本特点数据规模大:总共包含32.8万张图像)。其中标注过的图像超过 20 万张,拥有 150 万个目标实例,数据量丰富,能够为模型训练提供充足的信息。类别丰富:包含80个目标类别和91个“stuff”类别。目标类别涵盖了日常生活中常见的各种物体,如人、动物、交通工具、生活用品等;stuff。

Limiiiing的博客 266

皮肤病识别 - 使用DenseNet或EfficientNet模型在ISIC数据集上进行皮肤病识别任务

在本篇博客中,我们探讨了如何使用 DenseNet 和 EfficientNet 模型在 ISIC 数据集上进行皮肤病识别任务。我们加载了数据集,并进行了预处理。然后我们使用 Keras 构建了两个不同的模型,并训练和评估了它们。最后,我们使用训练好的模型对新的皮肤病图像进行了预测。

斌擎科技 1307

daysmatter安卓版_days matter下载安装-days matter官方版下载v0.6.8 安卓版-2265安卓网

daysmatter安卓版是一款超实用的生活工具软件,功能强大的备忘录功能,实时提醒用户重要的事情,还可以规划清单,日历、计时等多种应用。日常生活必备!有需要的朋友就来2265安卓网下载吧!days matter正版介绍《days matter倒数日》是记录重要日子、日程、事件的提醒工具。适合多场景应用,不用担心遗忘遗漏重要的事情。例如:照顾baby的妈咪,不用担心一孕傻三年的烦恼。事情繁杂多的白...

weixin_42319396的博客 2681

TC3XX - MCAL知识点(三十九):AURIX™ TC3xx 的EDSADC实现旋变解码功能(应用笔记记录)

本文总结了英飞凌应用笔记中关于EDSADC旋变解码系统的关键内容。系统通过调幅解调获取电机位置和速度信号,支持内外载波生成方案,其中内部载波方案更常用(需2个DSADC通道)。重点介绍了滤波器链配置建议(避免FIR1)、系统条件要求(如偶数积分周期)以及群延迟计算方法。特别分析了SDCAP功能对硬件延迟的补偿机制,指出温度等因素可能导致外部电路延迟变化,需通过计数器测量并通过软件调整积分器起始点来消除角度误差。文中还提供了不同硬件延迟情况下的信号处理示例。

梦想技术家 464

2018总结 4年安卓 何去何从

一直在简书写,后来出了个程序员侮辱事件,看的人少了,慢慢就不怎么写了. 看了一下,今年技术文章就写了5篇 比起2016刚写文章那会,今年真的懒了很多.或许就是那个定律,到了瓶颈了. 去年定的2018的计划: 算是完成了1256. 3还处于,写简单demo的阶段,等于不会 4基本没了解. 6嘛,我觉得我还差点,不过现在岗位头衔是这个,嘿嘿. 计划外的: 1.react 2.jni写了个open...

weixin_33694172的博客 96

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

爱Android更要懂Android

爱Android更要懂Android——李宁解析学好Android两大法宝<br /><br />[背景资料]最近Android比较火,无论是摩托罗拉搭载Android 2.2准备咸鱼翻身,还是Android Market年底将在台湾开市……这些消息足以让人们为之振奋。但当人们看到Android的外表光鲜之时,更要注意到其潜在内涵,尤其对于广大开发者,一味盲目地崇拜并扎入其中并不实为理智之举。本期,我们为您邀请到一位与代码打了15年交道的李宁,以其亲身经历和开发经验来为广大开发者提出鉴言和忠告。热恋还在An

jincf2011的专栏 1061

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android的设计模式-状态模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中:1.定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。2.介绍 状态模式属于行为型模式 状态模式中的行为是由状态来决定的,即不同状态下的行为也不同。 状态模式的结构跟策略模式的几乎一样,但其本质是不一样的。策略模式中的行为是彼此独立,能够相互替换的;而状态模式的行为是平行的,,不同状态下其行为也是不一样的,具有

四月葡萄的博客 577

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

360 集团副总裁颜水成谈学界与业界区别:就像热恋和已婚

雷锋网(公众号:雷锋网)AI 科技评论按:2018 年 12 月 17 日,由鹏城实验室、新一代人工智能产业技术创新战略联盟共同举办的「新一代人工智能院士高峰论坛」在深圳隆重开幕。本次论坛将持续两天,由 17 日的主论坛和 18 日的医疗专题论坛组成。论坛以「『头雁』穿云,云脑启智」为主题,邀请了多位院士、国内顶级科技企业技术负责人参加论坛做报告,论坛的...

weixin_34310369的博客 229

【随笔】“阴面”和“阳面”

2020这个不寻常的一年,几近接近尾声,突然想留下点什么,却又不知从何说起。 最近又重温了一遍个人最爱看的电影《心花路放》,每当自己遇到烦心事,看到影片中的黄渤,我总能释然。 而立之年一过,渐渐变得越来越忧心忡忡。好比刚冒出来的想法,正准备用笔记下来,一个找便签纸的功夫就给忘记了;客户提了一个看上去简单稳妥的不要不要的需求,往往到实现的时候往往会卡壳;看到一段美妙的文字,想铭记于心,不出三日忘得一干二净...... 从事SAP相关行业已逾十年,早已经忘记了年少的初心——要立志做一个非常非常专业的安卓开

少年休闲海 3645

中国移动开发者社区专访:学习Android的两大法宝

  [背景资料]最近Android比较火,无论是摩托罗拉搭载 Android 2.2准备咸鱼翻身,还是Android Market年底将在台湾开市……这些消息足以让人们为之振奋。但当人们看到Android的外表光鲜之时,更要注意到其潜在内涵,尤其对于广大开发者, 一味盲目地崇拜并扎入其中并不实为理智之举。本期,我们为您邀请到一位与代码打了15年交道的李宁,以其亲身经历和开发经验来为广大开发者...

jandroid 244

htc m8什么时候更新Android 6.0,速度够快 港版HTC M8获Android 6.0更新

粉嫩魅力!HTC ONE M8梦幻粉真机图赏HTC上周五宣布为旗下2014上半年机皇HTC One M8推出“梦幻粉”新色系,它也是M8继一开始的晶丝灰、月光银、香槟金、与后来的热恋红之后,第五种色系款式,手机单机售价则跟前几款色系相同。http://img5.cache.netease.com/photo/0011/2014-08-12/600x450_A3EJIJGQ2ERI0011.jpgh...

weixin_30802399的博客 143

珍藏的情侣飞行棋高阶私密版,限时分享给大家,男女羞羞用,你懂的!

摘要:推荐"情侣飞行棋"游戏,帮助情侣增进感情互动。游戏在传统玩法基础上创新,提供基础版、进阶版和私密版三种模式,包含拥抱、猜谜等趣味任务,能创造甜蜜回忆,适合不同阶段的情侣体验。文中附下载链接。

2501_92035216的博客 2万+

2018总结.4年安卓-何去何从.

2018 之前一直在简书写,后来出了给程序员侮辱事件,看的人少了,慢慢就不怎么写了. 看了一下,今年技术文章就写了5篇,还很敷衍.扯远了… 这是csdn.哈哈 比起2016刚写文章那会,今年真的懒了很多.或许就是那个定律,到了瓶颈了. 去年定的2018的计划: 算是完成了1256. 3还处于,写简单demo的阶段,等于不会 4基本没了解. 6嘛,我觉得我还差点,不过现在岗位头衔是这个,嘿嘿. ...

jlanglang的博客 270

Android开发—Android性能优化大全

性能优化是门无尽的学问,还是很多可以继续深挖的点。我们在实际开发中,也可以通过监控APM上的数据来进行更加针对性的优化。只有不断的进行实操,才会发现更多可以优化的方向。技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面。

m0_70748458的博客 773

android系统里面的mic是哪个app_13款情侣专属APP,帮你记录恋爱中的点点滴滴!

收藏是点赞的4倍,收藏前点点赞吧,让大家都能看到~1、想你支持系统:iOS/Android想你是一款可以两人生活在虚拟的小屋里,可以一起养宠物、去海边度蜜月,还能一键叫起床。在这里聊天时发送亲亲、抱抱、打你等关键词,就能触发“爱情动作”!最方便的是两个人可以共用一个账号密码,一人注册,无需配对。2、清爽视频编辑传送门:xunjieshipin.com/download-freashvideoedi...

weixin_35565325的博客 1138
下一篇: 教你玩Robocode(1)
Model_CZ
博客等级 码龄19年 223粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值