《Android应用开发》——2.4节应用类

简介:

本节书摘来自异步社区《Android应用开发》一书中的第2章,第2.4节应用类,作者 【美】Chris Haseman,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 应用类
Android应用开发
一个典型的Android应用是一个由活动、广播接收方、服务和内容提供方组成的集合。应用类是把所有这些不同的部分粘合成一个单一的、相融合的实体的“胶水”。每当清单文件中初始化一个内容提供方、活动、服务或意图接收方的时候,也同时启动一个应用类,并使其可用。

2.4.1 默认的应用声明
查看AndroidManifest.xml文件,会看到一个典型的应用类声明如下所示:

<application android:icon="@drawable/icon"
   android:label="@string/app_name">
<!—Activities, Services, Broadcast Receivers, and Content Providers -->
</application>

可以看到标记。清单里的这部分内容在典型情况下包含与应用相关的信息。android:icon告诉系统在主应用列表中显示什么图标。这里的android:label指的是此前编辑过的strings.xml文件中的另一个数据项。

2.4.2 自定义应用
添加自定义应用所要采取的步骤与添加一个新活动时非常类似。

(1)在现有的AndroidManifest.xml清单文件中添加一个名字域。

(2)在扩展Application类的程序包内创建一个新的应用类。

(3)利用新应用类。

下面详细介绍步骤(1)和步骤(2)。你自己完成步骤(3)。

1.名字
关于清单文件中的名字, android:name不是指所描述的对象的名字,而是指该类在Java程序包内的位置。应用的声明也是一样。带有新声明的应用的开始标记如下所示;

<application android:icon="@drawable/icon"
   android:label="@string/app_name"
   android:name= ".SampleApplication">

这个声明告诉系统在Android应用列表中想用什么图标来代表这个应用。

类装载程序会将android:name的内容附加到在的开始标记内部的程序包声明的末尾,以此寻找应用类的位置。现在需要真正创建这个应用类,以满足类装载程序。

2.应用类
在最基本的层次上,如下代码可以创建一个应用类:

import android.app.Application;
public class SampleApplication extends Application{
   public void onCreate(){
     super.onCreate();
   }
}

应用可以是一个非常简单的类。如果不了解以下几个方面,就很难理解应用类能做什么。

活动非常短暂。
活动不能访问彼此的存储空间,它们通过意图来通信。
由于各种原因,活动不断被终止和启动,活动无法知道自己是否是应用运行期间内的第一次启动。而另一方面,只有在应用初始化的时候才调用应用类的onCreate方法。
因此,应用很适合于执行只有在应用第一次启动时才会发生的动作。

对于可能涉及多个活动的数据,需要一个临时的存放地,属于应用类一部分的某个数据成员是很便于存储它的地方。

向应用类中添加数据必须非常小心。在清单文件中声明的任何单一构件,从最简单的BroadcastReceiver到最复杂的活动,在由系统创建之前,都会首先创建应用类对象。这意味着必须让应用类的onCreate方法运行得尽可能快。

2.4.3 访问应用
对于所有的广播接收方、服务、活动和内容提供方,合适的父类都会提供给它们一个名为getApplication的方法。如果清单文件中指定了一个应用类对象,那么,getApplication被调用时会返回一个指向该对象的指针。既然已经声明、创建了这个类,访问它就非常简单,调用getApplication方法,把返回的对象映射到一个指针实例上即可。如下所示:

SampleApplication myApplication = (SampleApplication)
getApplication();
就是这样,可以把公共的数据成员或上下文敏感的方法添加到自己的应用类对象中,所有的构件可以通过一个调用访问同一个对象,如下所示:

public class SampleApplication extends Application{
   public String username;
   public void onCreate(){
     super.onCreate();
   }
}
要访问新添加的变量,只要映射到此前列出的对象上。如下所示:

public void onCreate(Bundle bundle){
   SampleApplication myApplication = 
      (SampleApplication)getApplication();
   myApplication.username = "sparks";
}

确保在应用类对象中的任何位置保存的任何数据都是相关数据,因为为应用类对象分配存储空间和初始化的时间耗费可能会成为影响启动时间的因素。

相关文章
|
23天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
24天前
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的实践指南
【4月更文挑战第2天】随着移动应用开发的不断进步,开发者们寻求更流畅、高效的用户体验。在Android平台上,Kotlin语言凭借其简洁性和功能性赢得了开发社区的广泛支持。特别是Kotlin协程,作为一种轻量级的并发处理方案,使得异步编程变得更加简单和直观。本文将深入探讨Kotlin协程的核心概念、使用场景以及如何将其应用于Android开发中,以提高应用性能和响应能力。通过实际案例分析,我们将展示协程如何简化复杂任务,优化资源管理,并为最终用户提供更加流畅的体验。
|
24天前
|
开发框架 安全 Android开发
探索安卓系统的新趋势:智能家居应用的蓬勃发展
随着智能家居概念的兴起,安卓系统在智能家居应用领域的应用日益广泛。本文将探讨安卓系统在智能家居应用开发方面的最新趋势和创新,以及其对用户生活的影响。
14 2
|
27天前
|
缓存 监控 Java
构建高效Android应用:从优化用户体验到提升性能
在竞争激烈的移动应用市场中,为用户提供流畅和高效的体验是至关重要的。本文深入探讨了如何通过多种技术手段来优化Android应用的性能,包括UI响应性、内存管理和多线程处理。同时,我们还将讨论如何利用最新的Android框架和工具来诊断和解决性能瓶颈。通过实例分析和最佳实践,读者将能够理解并实施必要的优化策略,以确保他们的应用在保持响应迅速的同时,还能够有效地利用系统资源。
|
28天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0
|
1月前
|
编解码 算法 Java
构建高效的Android应用:内存优化策略详解
随着智能手机在日常生活和工作中的普及,用户对移动应用的性能要求越来越高。特别是对于Android开发者来说,理解并实践内存优化是提升应用程序性能的关键步骤。本文将深入探讨针对Android平台的内存管理机制,并提供一系列实用的内存优化技巧,以帮助开发者减少内存消耗,避免常见的内存泄漏问题,并确保应用的流畅运行。
|
25天前
|
Java Android开发 开发者
构建高效Android应用:Kotlin协程的实践与优化
在响应式编程范式日益盛行的今天,Kotlin协程作为一种轻量级的线程管理解决方案,为Android开发带来了性能和效率的双重提升。本文旨在探讨Kotlin协程的核心概念、实践方法及其在Android应用中的优化策略,帮助开发者构建更加流畅和高效的应用程序。通过深入分析协程的原理与应用场景,结合实际案例,本文将指导读者如何优雅地解决异步任务处理,避免阻塞UI线程,从而优化用户体验。
|
30天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
18 4
|
2天前
|
移动开发 Java Android开发
构建高效Android应用:采用Kotlin协程优化网络请求
【4月更文挑战第24天】 在移动开发领域,尤其是对于Android平台而言,网络请求是一个不可或缺的功能。然而,随着用户对应用响应速度和稳定性要求的不断提高,传统的异步处理方式如回调地狱和RxJava已逐渐显示出局限性。本文将探讨如何利用Kotlin协程来简化异步代码,提升网络请求的效率和可读性。我们将深入分析协程的原理,并通过一个实际案例展示如何在Android应用中集成和优化网络请求。
|
2天前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin协程的优势与实践
【4月更文挑战第24天】随着移动开发技术的不断演进,提升应用性能和用户体验已成为开发者的核心任务。在Android平台上,Kotlin语言凭借其简洁性和功能性成为主流选择之一。特别是Kotlin的协程功能,它为异步编程提供了一种轻量级的解决方案,使得处理并发任务更加高效和简洁。本文将深入探讨Kotlin协程在Android开发中的应用,通过实际案例分析协程如何优化应用性能,以及如何在项目中实现协程。