Android--第一个android程序

 写在前边

※安卓开发工具常用模拟器汇总Android开发者必备工具-常见Android模拟器(MuMu、夜神、蓝叠、逍遥、雷电、Genymotion...)_安卓模拟器-CSDN博客

※一般游戏模拟器运行速度相对较快,本文选择逍遥模拟器_以下是Android Studio连接模拟器实现(先从以上博文中下载逍遥模拟器)

Android studio连接逍遥安卓模拟器_逍遥模拟器怎么连接android studio-CSDN博客


新建工程exp1

新建项目--Empty Activity(选择java语言),工程目录如下:

项目创建完成,逍遥模拟器下载后,Android Studio连接模拟器Asus ASUS_I005DA;

运行app后显示如下: 

MainActivity.java文件

它是应用程序的主要活动(Activity),负责处理用户与应用程序之间的交互。 它包含了应用程序的主要逻辑和界面设计,主要是实现功能设计

MainActivity类继承了AppCompatActivity类;并重写override其中的函数onCreate函数;

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);//MainActivity.java和activity_main.xml如何建立联系:ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});
}
activity_main.xml文件

activity_main.xml其实就是一个布局文件;手动拖动的控件系统可以帮忙自动生成xml代码,该文件有code、split、design三个界面;我们大多通过code进行页面设计;


【以下测试使用模拟器Medium Phone API 35】

a.程序正常启动和关闭

程序运行: 

程序结束: 

(1)程序开始运行时经过了三个状态,分别为onCreate(), onStart(),onResume()

onCreate: Activity启动以后第一个被调用的函数,用来进行初始化。

onStart(): Activity显示到屏幕上时会被调用。

onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

(2)程序关闭时【在overview界面清除程序后台】经过了四个状态,分别为onPause(),onStop(),on SaveInstanceState()和onDestroy()

onPause(): Activity进入暂停状态时被调用。

onStop(): Activity不对用户可见以后,就会被调用,Activity进入停止状态。

on SaveInstanceState():保存Acticivity被销毁前的状态:在离开页面的时候用onSaveInstanceState中的outState可以保存你所需要的值;

onDestory: Activity被终止前,或者说进入非活动状态时,会被调用。

b.电话_程序运行与中断

程序运行:

 切换打电话页面:

重新切换回程序页面:

 (1)程序开始运行时经过了三个状态,分别为onCreate(), onStart(),onResume():

onCreate: Activity启动以后第一个被调用的函数,用来进行初始化。

onStart(): Activity显示到屏幕上时会被调用。

onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

(2)程序打电话时经过了三个状态,分别为onPause(),onStop(),on SaveInstanceState():

onPause(): onPause(): Activity进入暂停状态时被调用。

onStop(): Activity不对用户可见以后,就会被调用,Activity进入停止状态。

切换界面打电话,导致原有程序进入不可见的状态,所以先执行onPause在执行onStop()回调函数。

on SaveInstanceState():保存Acticivity被销毁前的状态:在离开页面的时候用onSaveInstanceState中的outState可以保存你所需要的值;

(3)程序在电话挂断的时候经过了三个状态,分别为onRestart(),onStart(),onResume():

onRestart(): Activity从停止状态进入活动状态。

onStart(): Activity显示到屏幕上时会被调用。

onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

电话挂断以后,重新进入原程序界面,所以会经历重启,接受用户输入的过程。

c.短信_程序运行与中断

 程序运行:

短信发送页面:

重新切回程序:

(1)程序开始运行时经过了三个状态,分别为onCreate(), onStart(),onResume():

onCreate: Activity启动以后第一个被调用的函数,用来进行初始化。

onStart(): Activity显示到屏幕上时会被调用。

onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

(2)程序发送短信经过了三个状态,分别为onPause(),onStop(),on SaveInstanceState():

onPause(): onPause(): Activity进入暂停状态时被调用。

onStop(): Activity不对用户可见以后,就会被调用,Activity进入停止状态。

切换界面发短信,导致原有程序进入不可见的状态,所以先执行onPause在执行onStop()回调函数。

on SaveInstanceState():保存Acticivity被销毁前的状态:在离开页面的时候用onSaveInstanceState中的outState可以保存你所需要的值;

(3)程序在短信界面切回的时候经过了三个状态,分别为onRestart(),onStart(),onResume():

onRestart(): Activity从停止状态进入活动状态。

onStart(): Activity显示到屏幕上时会被调用。

onResume(): Activity可以接受用户的输入时,会被调用,处于Activity栈的栈顶。

//Mainactivity.java
package com.example.exp1;import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;import android.util.Log;public class MainActivity extends AppCompatActivity {private static String TAG="LIFTCYCLE";@Override    //重写onCreate函数,完全生命周期的开始,用来进行activity初始化public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//EdgeToEdge.enable(this);setContentView(R.layout.activity_main);Log.i(TAG,"(1)onCreate()");}//可视生命周期的开始,activity显示在屏幕上调用;@Overridepublic void onStart(){super.onStart();Log.i(TAG,"(2)onStart()");}@Override//恢复onsaveInstanceState()保护的用户界面信息public void onRestoreInstanceState(Bundle savedInstanceState){super.onRestoreInstanceState(savedInstanceState);Log.i(TAG,"(3)onRestoreInstanceState()");}@Override//活动生命周期开始时被调用,恢复被onPause()停止的用于UI更新的资源public void onResume(){super.onResume();Log.i(TAG,"(4)onResume()");}@Override//在onResume()后被掉用,保存界面信息public void onSaveInstanceState(Bundle savedInstaceState){super.onSaveInstanceState(savedInstaceState);Log.i(TAG,"(5)onSaveInstanceState()");}@Override//在重新进入可视生命周期前调用public void onRestart(){super.onRestart();Log.i(TAG,"(6)onRestart()");}@Override//在活动生命周期结束时调用;public void onPause(){super.onPause();Log.i(TAG,"(7)onPause()");}@Override//在可视生命周期时调用public void onStop(){super.onStop();Log.i(TAG,"(8)onStop()");}@Override//在完全生命周期结束时调用public void onDestroy(){super.onDestroy();Log.i(TAG,"(9)onDestroy()");}
}
//abdroidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" ><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Exp1"tools:targetApi="31" ><activityandroid:name=".MainActivity"android:exported="true" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
//activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是第一个Android程序"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>

问题:

Medium Phone API 35 is already running. If that is not the case, delete C:\Users\DELL\.android\avd\Medium_Phone_API_35.avd\*.lock and try again.

打开任务管理器:按下键盘上的Ctrl+Shift+Esc组合键,这将直接打开任务管理器。或者,你也可以通过右键点击任务栏,然后选择“任务管理器”来打开它。

  1. 查找Android模拟器进程:在任务管理器中,切换到“进程”选项卡(在Windows 10及更高版本中,这通常是默认显示的选项卡);滚动进程列表,查找与Android模拟器相关的进程。这些进程可能包含“emulator”、“qemu”、“adb”(Android Debug Bridge)或“studio64.exe”(如果Android Studio正在运行64位版本)等字样。※注意,进程名称可能会因Android Studio的版本或安装的模拟器而有所不同。
  2. 结束进程:如果你找到了与Android模拟器相关的进程,并且确定它是不再需要的,你可以右键点击该进程,然后选择“结束任务”来关闭它。※警告:结束某些进程可能会导致数据丢失或系统不稳定。特别是与Android模拟器相关的进程,结束它们可能会导致正在运行的模拟器实例关闭,并可能丢失未保存的模拟器状态或数据。因此,在结束进程之前,请确保你了解该进程的作用,并谨慎操作。
  3. 重启Android Studio或模拟器:有时候,结束与模拟器相关的进程后,你可能需要重启Android Studio或模拟器来恢复正常的操作。

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

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

相关文章

C++初阶(五)--类和对象(中)--默认成员函数

目录 一、默认成员函数&#xff08;Default Member Functions&#xff09; 二、构造函数&#xff08; Constructor&#xff09; 1.构造函数的基本概念 2.构造函数的特征 3.构造函数的使用 无参构造函数 和 带参构造函数 注意事项&#xff1a; 4.默认构造函数 隐式生成的…

Node-RED开源项目的modbus通信(TCP)

一、Modbus 通信协议 Modbus是一种串行通信协议&#xff0c;是Modicon公司&#xff08;现在的施耐德电气 Schneider Electric&#xff09;于1979年为使用可编程逻辑控制器&#xff08;PLC&#xff09;通信而发表。Modbus已经成为工业领域通信协议的业界标准&#xff08;De fact…

重庆大学软件工程考研,难度如何?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重大软件专业可谓是最好上岸的985院校&#xff01;重庆大学24考研各大学院复试录取情况已出&#xff0c; 我们先说学硕部分&#xff1a; 招生人数&#xff1a; 重庆大学软件工程学硕近几年计划统招人数都不多&#xf…

【 截稿倒计时 | JPCS独立出版 | 检索快速稳定】第三届能源与动力工程国际学术会议(EPE 2024)

第三届能源与动力工程国际学术会议&#xff08;EPE 2024&#xff09; 2024 3rd International Conference on Energy and Power Engineering 2024年10月18日 线上会议 往届平均会后3个月完成见刊及EI检索&#xff0c;检索快速稳定~ EPE 2023 EI检索 EPE 2023 Scopus检索 …

Git_GitHub

Git_GitHub 创建远程仓库 远程仓库操作 创建远程仓库别名 基本语法 案例实操 推送本地分支到远程仓库 基本语法 案例实操 拉取代码 基本语法 案例实操 克隆远程仓库到本地 基本语法 案例实操 邀请加入团队 选择邀请合作者 填入想要合作的人 复制邀请函 接受邀…

C语言笔记(数据的存储篇)

目录 1.数据类型的详细介绍 2.整型在内存中的存储&#xff1a;原码、反码、补码 3.大小端字节序介绍及判断 4.浮点型的内存中的存储解析 1.数据类型的详细介绍 下述是内置类型&#xff1a; char // 字符数据类型 short // 短整型 int // 整型 long …

MySQL-事务Transaction详解

文章目录 事务概述事务基本概念事务四大特性(ACID)演示MySQL事务手动开启事务MySQL默认事务机制 事务的隔离级别隔离级别基本概述三种现象脏读不可重复读幻读 查看和设置隔离级别四种隔离级别及演示读未提交(read uncommitted)读提交(read committed)可重复读(repeatable read)…

sql-labs靶场第十八关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库&#xff0c;查看数据库名称 ③爆表&#xff0c;查看security库的所有表 ④爆列&#xff0c;查看users表的所有列 ⑤成功获取用户名…

用Spring AI 做智能客服,基于私有知识库和RAG技术

Java智能客服系统运用RAG技术提升答疑精准度 基于Spring ai 的 RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;Java智能客服系统能够利用私有知识库中的信息提供更准确的答疑服务。 它的核心思路是&#xff1a; 首先&#xff0c;将客服QA以Word形式导入到系统中&…

基于FreeRTOS的LWIP移植

目录 前言一、移植准备工作二、以太网固件库与驱动2.1 固件库文件添加2.2 库文件修改2.3 添加网卡驱动 三、LWIP 数据包和网络接口管理3.1 添加LWIP源文件3.2 Lwip文件修改3.2.1 修改cc.h3.2.2 修改lwipopts.h3.2.3 修改icmp.c3.2.4 修改sys_arch.h和sys_arch.c3.2.5 修改ether…

量子门电路开销——T门、clifford门、toffoli门、fredkin门

在量子计算中&#xff0c;T门的成本比Clifford门高出很多倍的原因与量子计算中纠错的实现、物理门操作的复杂性以及容错量子计算架构中的成本评估有关。以下是几个关键原因&#xff0c;解释了为什么 T 门的成本在量子计算中远远高于 Clifford 门&#xff1a; 1. T 门和 Cliffo…

录微课专用提词器,不会被录进视频中的提词器,还能显示PPT中备注的内容

不坑提词器&#xff0c;全称&#xff1a;不坑隐形提词器。是一款能够在截图、录屏、直播过程中隐藏界面的提词器软件。 系统要求&#xff1a;Win10 1024 以上&#xff08;特别提醒&#xff1a;Win7状态下不可隐身&#xff09; ⏬下载 提词器默认放在不坑盒子的安装目录下&…

百易云资产管理运营系统 ufile.api.php SQL注入漏洞复现

0x01 产品描述&#xff1a; 百易云资产管理运营系统&#xff0c;是专门针对企业不动产资产管理和运营需求而设计的一套综合解决方案。该系统能够覆盖资产的全生命周期管理&#xff0c;包括资产的登记、盘点、评估、处置等多个环节&#xff0c;同时提供强大的运营分析功能&#…

SQL Injection | MySQL 手工注入全流程

0x01&#xff1a;MySQL 手工注入 —— 理论篇 手工注入 MySQL 数据库&#xff0c;一般分为以下五个阶段&#xff0c;如下图所示&#xff1a; 第一阶段 - 判断注入点&#xff1a; 在本阶段中&#xff0c;我们需要判断注入点的数据类型&#xff08;数字型、字符型、搜索型、XX 型…

【星闪技术】WS63E模块的WiFi客户端测试

引言 我所计划的WS63E测试要实现MQTT联网&#xff0c;所以首先需要确保开发板连接WiFi。今天来测试一下WiFi功能。 程序分析 WiFi客户端的例子在src/application/samples/wifi/sta_sample目录下。这个例子看上去和hi3861的例子差不多。 这段程序是一个用于嵌入式设备的Wi-F…

国产AI逆袭!零一万物新模型Yi-Lightning超越 GPT-4o

近日&#xff0c;由全球千万用户盲测投票产生的 AI 模型排行榜公布&#xff0c;国产 AI 模型“Yi-Lightning”逆袭&#xff0c;超越了此前长期占据榜首的 GPT-4。 “Yi-Lightning”模型由国内知名 AI 公司零一万物研发&#xff0c;在多个分榜中均名列前茅&#xff0c;其中数学…

HDU RSA

翻译成中文后&#xff1a; 思路&#xff1a;由题易得&#xff0c;d * e y * f ( n ) 1 ,且gcd ( e , f ( n ) ) 1,所以用扩展欧几里得求出 d &#xff0c;但要保证 d 是非负的&#xff0c;最有用快速幂求出每个字符即可。 #include<bits/stdc.h> using namespace std;…

HTML5教程(二)- HTML语法及基本结构

1. 介绍 HTML 超文本标记语言&#xff08;HyperText Markup Language&#xff09;浏览器能够识别和解析的语言&#xff0c;通过标签的形式构建页面结构和填充内容&#xff08;用来描述网页的语言&#xff09;。HTML 不是一种编程语言&#xff0c;而是一种标记语言&#xff08;是…

基于SpringBoot+Vue+uniapp微信小程序的教学质量评价系统的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

决策树(1)

原理 基础概念 决策树属于判别模型。 决策树算法属于监督学习方法。 决策树是一种树状结构&#xff0c;通过做出一系列决策&#xff08;选择&#xff09;来对数据进行划分&#xff0c;这类似于针对一系列问题进行选择。 决策树的决策过程就是从根节点开始&#xff0c;测试待分…