当前位置:萝卜系统 > 硬件软件教程 > 详细页面

Android应用程序生命周期中的活动与图标

Android应用程序生命周期中的活动与图标

更新时间:2023-06-22 文章作者:未知 信息来源:网络 阅读次数:

根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

android应用程序周期_android小程序_android 小程序

面向大众的移动技术,第3部分

为您的Android移动应用程序添加导航样式

Andrew Glover

安德鲁·格洛弗

2013年7月25日发布

面向大众的移动技术

请期待本系列的后续内容.

请期待本系列的后续内容.

近年来,移动应用程序发布和移动开发技术市场都在爆炸式增长. 本系列文章将向熟悉编程但对移动技术相对较新的开发人员介绍移动应用程序的开发. 首先使用Java?代码对本机应用程序进行编码,然后将该工具箱扩展为包括JVM语言,脚本框架,HTML5 / CSS / JavaScript,第三方工具等. 本系列文章将带您逐步掌握这些必要的技术,并实际处理所有移动开发方案.

现在,移动设备的功能异常强大,比许多开发人员用来编写其第一个程序的台式计算机要强大得多. 因此,很容易忘记移动设备仍处于资源有限的环境中. 在开发移动应用程序时,您绝不能忘记应用程序运行环境的限制. 尤其是当某个应用程序想要与其他应用程序竞争系统资源时,其中某些应用程序对您的日常行为比您的行为更为重要.

确保应用程序流行的方法之一是确保其节省系统资源. 在Android中,使用和维护系统资源的机制是Activity类. 您对基本类的生命周期了解得越多(与Java Servlet非常相似),您就越有能力调整Android移动应用程序的资源使用率和性能.

我们将从快速了解Activity类的生命周期开始. 通过示例应用程序的演示,您将学习如何处理Android应用程序生命周期的每个阶段. 掌握了这些方法的原理后,您就可以明智地使用系统资源了. 然后更新演示应用程序的导航系统,并使用操作图标代替菜单按钮来实现用户交互. 图标在移动应用程序UI中是非常标准的,并且较新的Android设备(版本4.2.2及更高版本)已放弃选项菜单,而是使用操作栏. 知道如何将这些功能与您的Android移动应用程序集成将使您受益!

Activity的生命周期直接对应于Android移动应用程序的生命周期. 当用户与应用程序或运行该应用程序的设备进行交互时,Android平台将在Activity实例上执行回调. 当用户启动应用程序时,初始活动将执行定义的生命周期. 当应用程序进入后台时,它执行生命周期的不同阶段,而当应用程序关闭时,它执行另一个阶段. 显示了每个交互阶段的Android Activity生命周期.

图展示了 Android 移动应用程序的 Activity 生命周期。

图展示了 Android 移动应用程序的 Activity 生命周期。

Android移动应用程序生命周期包括四个阶段:

以下内容将描述每个阶段及其回调方法(可以在Activity实例内部实现).

如果您一直在关注本系列文章,那么您已经在本系列的第一篇和第二篇文章中创建了自己的演示应用程序. 如果没有演示应用程序,建议您先创建一个演示应用程序,然后再继续. 或者,您可以复制我自己的Overheard Word演示应用程序的Git库(请参阅参考资料).

在上一篇文章中,您使用了与启动Activity相对应的回调方法,即onCreate. 您可能还熟悉onStart和onResume,并且在启动时也调用了这两种方法. 现在,在“活动”生命周期的上下文中考虑这些方法.

在Eclipse Android开发环境中,选择Override / Implement Methods ...选项来轻松地重写方法,如图所示.

在 Eclipse 中重写 actvity 生命周期回调方法的屏幕截图。

在 Eclipse 中重写 actvity 生命周期回调方法的屏幕截图。

android 小程序_android小程序_android应用程序周期

接下来,选择onStart和onResume方法:

在 Eclipse 中选择回调的屏幕截图。

在 Eclipse 中选择回调的屏幕截图。

现在像我一样使用Android Log类添加一些跟踪语句.

@Override
protected void onResume() {
    super.onResume();
    Log.d("overheardword", "onResume Invoked");
}
@Override
protected void onStart() {
    super.onStart();
    Log.d("overheardword", "onStart Invoked");
}

启动应用程序的实例,并通过LogCat查看日志以检查结果,如图所示.

Logcat 的调试语句屏幕截图。

Logcat 的调试语句屏幕截图。

Android拥有自己的日志记录系统android.util.Log. 使用此方便的类,您可以记录各种级别的日志(例如信息,警告,调试等),然后通过Android SDK随附的logcat工具查看日志. 在Eclipse中,您应该将LogCat视为可用于过滤标签和应用程序实例的选项卡. 只要将设备插入台式机或笔记本电脑的USB插座,LogCat还支持访问设备上的日志.

您可能已经猜到了onCreate将在首次加载应用程序时被调用android应用程序周期,并且在其他阶段的上下文中(例如,当应用程序进入后台并重新启动时)使用onStart和onResume更方便.

由于移动设备通常运行多个应用程序,并且它们以各种方式吸引用户的注意力,因此您的应用程序应该知道何时让另一个应用程序占据设备屏幕并使用更多资源. 有时,用户在使用该应用程序时需要接听电话,否则该应用程序可能会弹出一个对话框,例如信息请求或错误消息. 上述每个操作都会部分阻止当前的活动.

当活动被部分阻止时,将调用onPause方法. 当暂停的活动重新获得焦点时,将调用onResume. 暂停和恢复表明受影响的活动被部分阻止,而不是完全隐藏.

当应用程序被完全隐藏(例如,用户调用)时,也会调用onPause,但在这种情况下,它将继续调用onStop. 当应用程序再次进入前台时,它将首先调用onRestart,然后调用onStart,最后调用onResume.

以下内容说明了实现onPause,onRestart和onStop时发生的情况. 如果本系列文章中已经使用了Android应用程序,请在代码中添加一些日志语句,然后运行该应用程序. 按“主页”按钮完全隐藏该实例,然后单击其图标以再次运行它. 您应该看到一系列称为的方法. 您看到的第一件事是onPause,然后是onStop. 单击图标重新运行应用程序时,调用的方法是onRestart,onStart和onResume.

破坏活动也是在运行应用程序的正常过程中发生的事情. 例如android应用程序周期,您可以调用Activity实例的finish方法来终止该实例. 这里的关键在于,由于活动是封闭的,因此它将遵循与隐藏相同的生命周期,但最终将回调onDestroy.

在其中,我使用了Overheard Word应用程序(请参阅“面向公众的移动技术: 轻扫!”或从Github获取资源)来演示该过程,当手势向上滑动Finish方法时将调用该过程.

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
   try {
       final SwipeDetector detector = new SwipeDetector(e1, e2, velocityX, velocityY);
       if (detector.isDownSwipe()) {
        return false;
       }else if (detector.isUpSwipe()) {
        finish();
       }else if (detector.isLeftSwipe()) {
        Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show();
       }else if (detector.isRightSwipe()) {
        Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show();
       }
   } catch (Exception e) {
       // nothing
   }
   return false;
}

最常用的Activity生命周期方法是onCreate,onRestart和onDestroy. 例如,我使用onRestart刷新应用程序UI视图的许多方面之一,并使用onDestroy释放到的连接,例如在Android设备上本地运行的SQLite.

现在可能并不明显,但是一旦您开始与外部资源(例如外部Web服务或设备的文件系统或)协作,这些生命周期阶段将变得非常重要.

接下来,说明如何使用两个Activity钩子方法onCreateOptionsMenu和onOptionsItemSelected来实现应用程序菜单行为. 同步完这两种方法后,我们会将它们的功能连接到图标上,以实现其他UI效果.

当我在Eclipse中创建Overheard Word项目时,定义的第一个活动在onCreateOptionsMenu上有一个存根方法. 您可能会猜到,此方法用于创建选项菜单. 在较旧的Android设备上,选项菜单由“菜单”按钮表示. 在较新的设备上,它表示为在应用程序本身中显示的一系列垂直点. 较新的Android设备不一定具有菜单按钮.

在代表旧设备的的示例中,有一个名为“菜单”的按钮. 单击后,应用程序实例将显示选项菜单. 在此示例中,我们将看到导航选项. 例如,如果用户按下“主页”按钮,他们将看到显示的内容.

android小程序_android应用程序周期_android 小程序

一个屏幕截图,表示 Android 模拟器中显示的未实现的菜单项。

一个屏幕截图,表示 Android 模拟器中显示的未实现的菜单项。

平板电脑上没有菜单按钮. 用户无法从菜单中选择项目,但被要求启动各种操作. 较新的UI栏称为操作栏,如图所示.

Android 模拟器中的 Android 新操作栏。

Android 模拟器中的 Android 新操作栏。

尽管菜单按钮的行为与操作栏相似,但操作栏只能在较新的设备上实现. 由于我们的目标是Android系统的旧版本(请记住,大约50%的Android设备运行Gingerbread!),因此我将使用更加熟悉的菜单按钮进行演示. 稍后,我将说明如何更新导航代码以实现操作栏,以满足您针对较新版本的Android和相应设备的需求.

为了翻新Overheard Word以提高用户交互的效率,第一步是实现选项菜单,以便用户可以退出应用程序. 退出应用程序是Activity生命周期的阶段之一,因此我们将使用Activity方法来实现此功能.

请记住,在Android应用程序中,所有与UI相关的业务都对应一个XML文件,因此定义UI的方法是编辑布局XML文件. Android应用程序的XML文件位于项目的res文件夹中的特定目录中(例如,布局文件位于布局目录中).

作为快速练习,您可以查看Overheard Word主要活动中onCreateOptionsMenu方法的默认实现-您看到了什么?

public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.overheard_word, menu);
  return true;
 }

如果您要在菜单资源目录中查找名为overheard_word.xml的XML文件,那么您距离成为Android专家还很近!

接下来,我们将编辑菜单资源XML文件并添加一个名为quit的菜单项. 您首先需要在res / values目录中找到strings.xml文件. 找到它之后,创建一个新项目,如下所示:

<string name="quit_menu">Quit</string>

此标记定义了退出这个词,可以由标识符quit_menu引用(顺便说一句,这对于应用程序的国际化非常有用). 接下来,在菜单目录中打开overheard_word.xml文件. 在此文件中,将标题更改为@ string / quit_menu以将单词Quit链接到菜单项.

现在,启动,然后按菜单按钮. 您应该看到一个菜单出现在屏幕底部,带有一个选项: 退出. 但是选择它没有效果,因为它尚未实现.

我们将在一分钟内添加Quit选项的实现代码. 但是首先,我们必须考虑移动应用程序任何功能部分的另一个重要元素,即外观. 您可能已经注意到,大量的移动UI(甚至越来越多的Web应用程序UI)现在都使用图标进行导航. 下面说明了如何用免费图标替换通用单词按钮.


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-261493-1.html



温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html