移动应用程序设计基础——Android环境构建与Activity生命周期

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。5、 完成智能手机开发平台安装、以及相关配置;6、 并实现Hello World;7、 添加Log日志,通过Log日志验证Ac1、 安装JAVA JDK2、 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。3、 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。4、 设置生命周期的Log日志,分别执行相关操作

《移动应用程序设计基础》实 验 报 告(一)

实验名称:

Android环境构建与Activity生命周期

所使用的工具软件及环境:

JDK1.8,Android Studio

(一)

一、实验目的:

安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。

    1. 完成智能手机开发平台安装、以及相关配置;
    2. 并实现Hello World;
    3. 添加Log日志,通过Log日志验证Activity生命周期中的7个方法执行过程;
    4. 了解项目的基本文件目录结构,了解Activity周期中的4种状态。

    二、实验内容:

      1. 安装JAVA JDK
      2. 安装Android Studio,熟悉AS的基本操作,改变AS的字体,显示方式;截图和文字说明。
      3. 建立新项目,实现Hello World。说明各个文件的作用,以及各个关键语句的作用或含义,给出程序的运行结果。
      4. 设置生命周期的Log日志,分别执行相关操作
        • 在MainActivity中复写onCreate 、onStart、onResume 、onPause 、onStop 、onDestroy 和onRestart;
        • 分别在各个方法中添加日志监视语句,例如:Log.e(“ActivityLife”, "onCreate");
        • 分别执行
          1. 打开程序,在LogCat的输出日志中检查输出情况,执行顺序是否为onCreate()onStart()onResume()
          2. 按下back键,在LogCat的输出日志中检查输出情况,执行顺序是否为onPause()、onStop()、onDestory();
          3. 按下home键,在LogCat的输出日志中检查输出情况,执行顺序是否为onPause()、onStop();
          4. 再启动HelloWorld,在LogCat的输出日志中检查输出情况,执行顺序是否为onRestart()、onStart()、onResume();

            三、源代码

            //activity_main.xml
              <?xml version="1.0" encoding="utf-8"?>
            <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Hello World!"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintLeft_toLeftOf="parent"
                    app:layout_constraintRight_toRightOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />
            </androidx.constraintlayout.widget.ConstraintLayout>

            image.gif

            //MainActivity.java 
            package com.example.helloworld;
            import androidx.appcompat.app.AppCompatActivity;
            import android.os.Bundle;
            import android.app.Activity;
            import android.os.Bundle;
            import android.util.Log;
            public class MainActivity extends Activity {
                public MainActivity(){
                    Log.e("TAG","MainActivity()");
                }
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    Log.e("TAG","onCreate()");
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                }
                @Override
                protected void onStart() {
                    Log.e("TAG","onStart()");
                    super.onStart();
                }
                @Override
                protected void onResume() {
                    Log.e("TAG","onResume()");
                    super.onResume();
                }
                @Override
                protected void onPause() {
                    Log.e("TAG","onPause()");
                    super.onPause();
                }
                @Override
                protected void onStop() {
                    Log.e("TAG","onStop()");
                    super.onStop();
                }
                @Override
                protected void onDestroy() {
                    Log.e("TAG","onDestroy()");
                    super.onDestroy();
                }
                @Override
                protected void onRestart() {
                    Log.e("TAG","onRestart()");
                    super.onRestart();
                }
            }

            image.gif

            四、实验结果测试

            image.gif编辑

            1.此时安装好的JDK版本

            image.gif编辑

            23.能够创建一个新工程项目helloworld且能运行,在Android studio中能够改变主题和字体样式和大小,此时我选择默认不做改变

            image.gif编辑

            4.1)首次打开helloworld查看运行周期日志

            image.gif编辑

            2)点击back,查看周期日志

            image.gif编辑

            3)重新启动,查看周期日志

            image.gif编辑

            (4)点击home,查看周期日志

            五、收获与体会

            能够安装好JDK,收悉了android studio各个工程项目中的文件,能够初次运行helloworld,且学习到了app的生存周期并且能够查看日志。

            (二)

            一、实验目的:

            安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。

              1. 完成智能手机开发平台安装、以及相关配置;
              2. 并实现Hello World;
              3. 添加Log日志,通过Log日志验证Activity生命周期中的7个方法执行过程;
              4. 了解项目的基本文件目录结构,了解Activity周期中的4种状态。

              二、实验内容:

              5、bug调试、测试实验

              以下代码是实现一个进度条测试程序,在界面(activity_main.xml)上放置一个水平长条形的进度条(style:progressBarStyleHorizontal,id:horizontal_pbar),以及一个启动进度条的按钮。点击按钮,进度条从0增加到满格100,进度条停止。由于代码中存在各种问题,现请你将代码修正和调试正确。

              三、源代码

              //activity_main.xml
                <?xml version="1.0" encoding="utf-8"?>
              <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:tools="http://schemas.android.com/tools"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical"
                  tools:context="com.example.helloworld.MainActivity">
                  <ProgressBar
                      android:id="@+id/horizontal_pbar"
                      style="?android:attr/progressBarStyleHorizontal"
                      android:layout_width="match_parent"
                      android:layout_height="50dp"
                      android:max="100" />
                  <Button
                      android:id="@+id/start_pbar_btn"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:text="启动进度条" />
              </LinearLayout>

              image.gif

              //MainActivity.java 
              package com.example.helloworld;
              import androidx.appcompat.app.AppCompatActivity;
              import android.os.Bundle;
              import android.os.Handler;
              import android.view.View;
              import android.widget.Button;
              import android.widget.ProgressBar;
              public class MainActivity extends AppCompatActivity {
                  private ProgressBar mProgress;
                  private Handler mHandler = new Handler();
                  private Boolean FLAG=true;
                  private Button startpbarbtn;
                  int mProgressStatus=0;
                  protected void onCreate(Bundle icicle) {
                      super.onCreate(icicle);
                      setContentView(R.layout.activity_main);
                      mProgress = (ProgressBar) findViewById(R.id.horizontal_pbar);
                      //设置监听按钮
                      startpbarbtn = (Button)findViewById(R.id.start_pbar_btn);
                      //设置监视内容
                      startpbarbtn.setOnClickListener(new View.OnClickListener() {
                          @Override
                          public void onClick(View view) {
                              //监听
                              new Thread(new Runnable() {
                                  public void run() {
                                  //推荐使用标志位使其不执行代码,不推荐使用true
                                      while (FLAG) {
                                          mProgressStatus = addNum();
                                          // 更新进度条
                                          // post方法推送一个Runnable到Handler,可以在此更新UI
                                          mHandler.post(new Runnable() {
                                              public void run() {
                                                  if(mProgressStatus<100) {
                                                      mProgress.setProgress(mProgressStatus);
                                                      mProgressStatus++;
                                                  }
                                                  //执行完成后隐藏进度条并将标志设置为false
                                                  else {
                                                      mProgress.setVisibility(View.INVISIBLE);
                                                      FLAG = false;
                                                  }
                                              }
                                          });
                                      }
                                  }
                                  private int addNum() {
                                      try {
                                          Thread.sleep(100);
                                      } catch (InterruptedException e) {
                                          e.printStackTrace();
                                      }
                                      return mProgressStatus;
                                  }
                              }).start();
                          }
                      });
                  }
              }

              image.gif

              四、实验结果测试

              image.gif编辑

              1.bug程序修改完成,启动

              image.gif编辑

              2.点击启动进度条,开始启动

              image.gif编辑

              3.进度完成,隐藏进度条

              五、收获与体会

              对部分代码进行修改,增加了按钮监听,使得程序可以正常运行,对监听器的运用和Android studio代码的编写有了进一步的了解和运用。

              相关实践学习
              日志服务之使用Nginx模式采集日志
              本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
              相关文章
              |
              12天前
              |
              安全 Android开发 iOS开发
              Android vs. iOS:构建生态差异与技术较量的深度剖析###
              本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
              |
              5天前
              |
              Java API Android开发
              安卓应用程序开发的新手指南:从零开始构建你的第一个应用
              【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
              21 5
              |
              4天前
              |
              前端开发 JavaScript 测试技术
              Android适合构建中大型项目的架构模式全面对比
              本系列教程详细讲解 Kotlin 语法,适合需要深入了解 Kotlin 的开发者。快速学习 Kotlin 语法的小伙伴可以查看“简洁”系列教程。此外,教程还对比了多种适合中大型项目的架构模式,如 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux,帮助开发者根据项目需求选择合适的架构。
              15 3
              |
              7天前
              |
              Android开发
              Android面试之Activity启动流程简述
              Android面试之Activity启动流程简述
              51 6
              |
              5天前
              |
              前端开发 JavaScript 测试技术
              Android适合构建中大型项目的架构模式全面对比
              Android适合构建中大型项目的架构模式全面对比
              17 2
              |
              8天前
              |
              消息中间件 Android开发 索引
              Android面试高频知识点(4) 详解Activity的启动流程
              Android面试高频知识点(4) 详解Activity的启动流程
              16 3
              |
              8天前
              |
              缓存 前端开发 Android开发
              Android实战之如何截取Activity或者Fragment的内容?
              本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
              11 3
              |
              11天前
              |
              开发工具 Android开发 iOS开发
              Android vs iOS:构建移动应用时的关键考量####
              本文深入探讨了Android与iOS两大移动平台在开发环境、性能优化、用户体验设计及市场策略方面的差异性,旨在为开发者提供决策依据。通过对比分析,揭示两个平台各自的优势与挑战,帮助开发者根据项目需求做出更明智的选择。 ####
              |
              12天前
              |
              人工智能 Android开发
              1024 云上见 构建AI总结助手,实现智能文档摘要 领罗马仕安卓充电器
              1024 云上见 构建AI总结助手,实现智能文档摘要 领罗马仕安卓充电器
              39 1
              |
              15天前
              |
              调度 Android开发 开发者
              构建高效Android应用:探究Kotlin多线程优化策略
              【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
              36 4