Android应用程序开发入门——基础概念

Android开发入门:基于平台的应用开发指南 您可以通过设置适当的开发环境、创建新项目、设计布局、定义活动并运行应用程序来开始Android开发。在上面的示例中,MainActivity类继承自AppCompatActivity类,它是Android支持库提供的一个基类,用于兼容不同Android版本之间的差异。然后,您需要下载并安装Android Studio,这是一个集成开发环境(IDE),用于开发Android应用程序。在Android Studio中,选择"File"菜单,然后选择"New"和"New Project"。 阅读详情

        Android 程序是利用Java语言来开发的。编译完成的java代码、数据和资源文件是通过一个叫做aapt的工具进行打包,打包之后会生成一个.apk文件。最终用户可以将.apk文件安装在Android手机上; 一般情况下,一个.apk文件就被称为一个应用程序。

编译过程
        .java-class==>dx.bat==>classes.dex    

        classes.dex---------------(经历过程)------------------sms.apk
        aapt.exe  android应用环境下的打包工具把应用程序素材资源res    manifast.xml

每一个Android应用程序都是运行在一个独立环境中的,这体现在很多方面:
     默认情况下,每个Android应用程序都是运行在它自己的linux进程中。当应用程序的任何部分代码需要被执行
时,Android会启动这个进程来运行它;当不再需要这个应用(即进程)时,并且其它应用请求系统资源时,Android
就会关闭这个程序。
     每个进程都拥有一个独立虚拟机,所以每一个应用程序相对于其它的应用程序是运行在一个孤岛环境中的。
     默认情况,每个android应用程序都分配了一个linux用户id,并且进行了相关的权限设置,所以应用程序的文件
只是对本应用程序是可见(当然,也是一些方式来将这些文件导出给其它的应用程序使用)。
     多个应用程序是可以分配一个相同的id的,这样话,它们就能访问彼此的文件了。多个拥有相同用户id的应用程序
也可以运行在同一个linux进程中,共同一个虚拟机,可以节约系统资源。

Android四大基本组件介绍与生命周期

Android四大基本组件分别是
                        1》Activity
                        2》Service服务
                        3》Content Provider内容提供者
                        4》BroadcastReceiver广播接收器

一:了解四大基本组件

Activity :

             应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。

             Activity之间通过Intent进行通信。在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。


        一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。

  一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。

  当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。


【Creating an Activity】

        创建一个activity,你必须创建一个Activity的子类(或者一个Activity的子类的子类)。在你的子类中,你需要实现系统回调的回调方法,当activity在它的生命周期的多种状态中转换的时候,例如当activity被创建、停止、恢复或摧毁。两个最重要的回调方法是:

onCreate()

          你必须实现这个方法。系统调用它当创建你的activity的时候。在你的实现中,你应该

          初始化你的activity的基本的组件。更重要的是,这里就是你必须调用setContentView()

          来定义activity用户接口而已的地方。

onPause()

          系统调用这个方法当用户离开你的activity(虽然不总是意味着activity被摧毁)。这通常

          是你应该提交任何变化,那此将会超越user session而存在的(因为用户可能不再回来)。

          有若干其它生命周期回调函数你应该使用为了提供一个流畅的用户体验,并表操作异常中断会引起你的activity被中断甚至被摧毁。
















  


Android应用开发的核心概念与实现 本文深入探讨了Android应用开发中的关键概念和实现方法。涵盖从基础的工厂类设计到高级游戏功能的实现,从应用程序的布局设计到网络支持的配置。文章通过实例和详细的技术描述,为开发者提供了全面的指导。 阅读详情

相关推荐

安卓开发入门:HelloWorld项目实践

本文还有配套的精品资源,点击获取 简介:HelloWorld是安卓应用开发的入门项目,代表编程起点。它包括一个显示“Hello, World!”文字的简单界面,帮助初学者理解环境配置和基础代码编写。该项目通常涉及多个文件,包括主活动的Java源代码文件、布局文件及AndroidManifest.xml配置文件。通过学习这个项目,开发者可以掌握安卓开发的基础知识,如环境搭建、...

weixin_36369848的博客 1649

Android 开发需要知道的一些基本概念

1,Android Activity 是什么概念? Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity

Wayne in Oracle 1511

&《HTML5&移动应用开发入门经典》

《HTML5&移动应用开发入门经典》

Android开发基础知识

可以用于启动 Activity:例如,你想要启动一个用于查看网页的浏览器 Activity,但你不需要知道具体的浏览器 Activity 类名,只需要指定 Intent 的动作为 VIEW,并指定数据为网页的 URI。系统首先会检查任务栈中是否存在该Activity的实例,如果存在,则将该实例之上的所有Activity实例出栈,使得该Activity成为任务栈的顶部。如果要启动的Activity已经位于任务栈的顶部(即是当前显示的Activity),则不会创建新的实例,而是调用已经存在的实例的。

weixin_58814750的博客 1001

移动应用开发入门基础

移动应用开发入门基础,现在已经进入的移动开发时代,谁掌握了移动开发谁就是未来的赢家。。。

避开ns-3学习深坑:用sns3模块快速搭建GEO卫星通信仿真(附GitHub代码解读)

本文介绍了如何使用sns3模块快速搭建GEO卫星通信仿真环境,绕过复杂的ns-3底层细节。通过详细的Linux环境配置、sns3模块安装和示例代码解读,帮助开发者快速上手卫星通信仿真,并提供了常见问题的解决方案和性能优化技巧。

weixin_28720573的博客 440

Android开发中的几个概念

adb adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Eclipse时adb进程就会自动运

陈炳桦的技术学习笔记 430

OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation

电磁线圈组驱动经典系统,可以作为参考。 OctoMag: 用于5自由度无线微操作的一个电磁铁系统 OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation [1] Paper Link Authors: J. J. Abbott, etc. 2010, TRO IEEE Transactions on Robot...

XU Yangxin的博客 1666

Android 开发基本概念汇总

刚入门Android学习, 对学习中遇到的一些Android知识概念进行总结

刚入职的Android系统工程师小白 3087

立创EDA实战:基于NE555的夜间氛围呼吸灯电路设计与模式切换

本文详细介绍了使用立创EDA设计基于NE555芯片的夜间氛围呼吸灯电路。项目核心是利用NE555产生PWM信号,并通过RC充放电电路实现LED亮度的缓慢周期性变化,形成呼吸效果。文章手把手教学,涵盖从电路原理分析、元件参数计算,到在立创EDA中进行原理图绘制、PCB布局布线,直至焊接调试的完整硬件设计流程,是电子爱好者入门实战的经典项目。

weixin_42153793的博客 125

Apache Doris IP变更问题详解

Apache Doris IP变更问题详解

ith321的博客 7274

诺迪克一级代理商怎么辨?授权链条与采购避坑指南

在工业品与电子部件供应链中,代理商、分销商与一级代理是常见渠道概念,其本质是原厂授权体系中的层级位置。授权链条通常从原厂、总代、一级代理延伸到二级分销和贸易商,每一层对应不同价格、备货、项目报备、FAE支持与批次追溯权限。核验授权主体、产品线、区域、级别和有效期,并通过原厂官网或客服反向查询,可提升供应商资质透明度,降低串货、翻新货、交期违约和售后争议风险。这类方法适用于非标设备出口认证、量产框架采购和研发试产选型。围绕诺迪克代理商、诺迪克一级代理商的识别,可结合授权书核验、报价货期反推、批次追溯和渠道分流

weixin_30613727的博客 293

AES128加密算法开发(含源码)

本文详解了AES128加密算法的原理与C语言实现。AES128是当前广泛使用的对称加密标准,采用128位密钥和10轮变换,具有高安全性和高效性。文章从算法背景、核心概念(混淆与扩散)入手,详细解析了4×4状态矩阵表示、4个核心变换(字节替换、行移位、列混合、轮密钥加)以及密钥扩展过程。特别针对汽车电子应用场景,如ECU通信加密、车钥匙认证等,说明了AES128在资源受限环境中的优势。通过分步图解和原理剖析,帮助开发者深入理解这一加密标准的技术细节与实现方法。

汽车电子软件开发笔记 2919

Android 常用开发术语

apk扩展名 :apk是Android包的扩展名,一个Android包包含了与某个Android应用程序相关的所有文件,apk文件将AndroidManifest.xml文件、应用程序代码(dex文件)、资源文件和其他文件组成一个压缩包,一个项目只能打包压缩成一个apk文件。 应用程序(APP) :一个或多个Activity、服务、监听和Intent接收器的集合,一个应用程序有一个文件清单,并且...

w2597014466的博客 570

Open3D(C++) 读取、可视化并保存点云【2025最新版】

博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 4621

基于相场法模拟金属铜的晶粒的长大过程附matlab完整代码

晶粒生长是一种重要的材料形态演化过程,对于材料的性能和制备有着非常重要的影响。相场法是一种将材料结构和热力学性质联系起来的方法,它能够有效地模拟晶粒的长大过程并预测材料的结构和性能。本文所采用的相场模型是基于Cahn-Hilliard方程和Allen-Cahn方程的二次相场模型。其中,Cahn-Hilliard方程描述了晶界的自由能密度,而Allen-Cahn方程则描述了晶粒的彼此之间的界面能密度。本篇文章将介绍如何使用相场法模拟金属铜的晶粒的长大过程,并提供完整的MATLAB代码供读者参考。

m0_47037246的博客 1383

Android开发之BUG专讲:入门篇(一)

前言: 本文作者:周才智 转载须注明作者与出处,违者必究! 原文地址:http://segmentfault.com/a/1190000004380690 话说诸葛亮是一个优秀的程序猿,每一个锦囊都是应对不同的case而编写的!但是优秀的程序猿也敌不过更优秀的bug!六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮只因为有一个错误的case-马谡,整个结构就被break了! BU

qq_33871315的博客 626

2025华为od机试真题B卷【版本管理】JavaScript实现

在 软件版本管理中,版本号由点分割的数字组成,例如 1.2.3 和 2.8。现在,你需要编写一个函数,计算两个版本号之间的可用版本号个数。这里的可用版本号指的是所有满足 version1<x<version2的版本号x的个数。若 version1 >=version2 返回0.,

MISAYAONE的博客 254

安卓开发—Android基础

安卓开发—Android基础 移动开发 移动开发也叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,业内也称作为无线开发。 移动应用包括早期的WM掌上助理设备,Web os设备、java设备、塞班设备,以及现在现在火热的安卓和苹果设备等移动应用的开发。 谷歌提供安卓平台,要开发,只需要掌握java语言,就可以在安卓平台上进行开发。 三大主流移动开发平台 以下是Android、IOS、Windows phone三大主流移

cs_loser的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

安卓开发入门基础

安卓开发入门基础

qq_42242452的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android开发入门基础

Android是基于Linux的修改版本的移动操作系统。 大多数Android代码是在开源Apache许可证下发布的。本文将简单介绍Android开发入门知识。

DataLearnerAI 2万+

Android Studio目录结构介绍, 安卓开发入门

安卓学习:Android Studio目录结构 刚刚开始学Android开发, 来分享一下Android Studio 项目的目录结构 这是刚刚创建完项目的样子 任何一个新建的项目都会默认使用Android模式的项目结构, 但这并不是项目最真实的目录结构, 而是被Android Studio转换过来的, 这种项目结构简洁明了,适合进行快速开发,但是对于新手来说可能并不易于理解。 点击图片中Android区域可以切换项目结构模式. 这里我们项目结构切换为Project, 这就是最真实的目录结构 这里开始

天行健 君子以自强不息,地势坤 君子以厚德载物。 5578

安卓Android入门

Android基于Linux内核,这使得它具有强大的硬件兼容性和稳定性。

m0_74154295的博客 2282

Android游戏开发入门基础

https://www.fgba.net/sitemap.xml

wubaohu1314的博客 1万+

自学android编程教程,安卓编程入门教程 安卓编程如何自学

安卓编程入门教程 安卓编程如何自学时间:2017-04-10来源:Android开发学习网安卓编程越来越火,发展前景无比诱人,越来越多的人加入了android开发者的行列。安卓编程入门很简单,今天小编给大家提供一份安卓编程入门教程,告诉大家安卓编程如何自学,希望能够给您带去帮助。安卓编程入门教程 安卓编程如何自学一、安卓编程开发基础知识1、Android应用程序是用java语言写的,通过...

weixin_36377785的博客 5689
上一篇: Eclipse导入ApiDemos后R.java不自动生成的问题
下一篇: Android—文件进行数据存储(四中操作模式)
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值