在Android应用程序中享受传统-现代Java

《Qt安卓编程:开启跨平台移动开发新时代》 Qt 安卓编程凭借其独特的跨平台性、高性能以及丰富的功能库,在移动应用开发领域展现出了强大的竞争力。通过对 Qt 安卓编程基础的学习,包括开发环境搭建、项目创建以及核心概念的掌握,开发者能够快速入门并开启安卓应用开发之旅。在实际开发中,Qt 安卓编程的核心技术,如用户界面开发、数据存储与管理、网络通信等,为构建功能丰富、用户体验良好的安卓应用提供了坚实的技术支撑。通过实战案例的演练,我们更深入地了解了如何将这些技术应用到实际项目中,以及在项目开发过程中如何进行优化和调试,解决常见问题。 阅读详情

前言

自 2019 年以来,Kotlin 是 Android 应用程序的首选语言。两年前,谷歌宣布在 Android Studio 中支持 Kotlin。从那时起已经过去了相当长的一段时间。那么,为什么 2021 年夏天的一篇文章仍然涉及Android 应用程序中的现代 Java ?

因为 Java 仍然存在于许多 Android 应用程序中。特别是在 2017 年之前发布的那些。当然,许多已经部分或完全转换为 Kotlin。但其他人没有。而且,应用程序越旧,使用的 Java 风格就越旧。Apache Harmony(其类库进入 Android)始于 Java 1.5。所以,非常古老的应用程序看起来像这样:大量的匿名内部类。StringJava 7的 s in switchstatements 或 try-with-resources 等功能需要很长时间才可AutoCloseable用。Java 8 的 Lambda 和流也没有立即可用。

因此,Android 应用程序中的 Java 代码可能看起来比它需要的要旧。我们当然可以说,只要该代码不会造成麻烦,我们最好不要管它。但如果它仍然是应用程序的重要组成部分,我们应该像对待新代码一样对待它:关心它。这可能意味着:

  • 将其转换为 Kotlin
  • 利用现代 Java 特性

我不打算比较这些方法,因为这本身就是一篇文章。😀 相反,我将专注于后一种选择。但在我们深入研究之前:这不是关于 Java 与 Kotlin,当然也不是关于争论哪种编程语言更好。我只是认为任何代码都应该尽可能好。

设置

语言版本在模块级build.gradle文件中配置。

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
  }
  kotlinOptions {
    jvmTarget = '11'
    useIR = true
  }
  ...

要使用 Java 11,我们还需要配置Android Gradle 插件 7.0,顺便说一下,它需要Java 11。这是在项目级build.gradle文件中完成的。

buildscript {
  ...
  repositories {
    google()
    mavenCentral()
  }
  dependencies {
    classpath "com.android.tools.build:gradle:7.0.0"
    ...

但为什么是 Java 11?我们在 3 月份没有看到 Java 16 吗?Java 11 是继 Java 8 之后的第一个长期支持 (LTS) 版本。Oracle 于 2019 年 1 月停止支持 Java 8。下一个 LTS 版本将是 Java 17,计划于 2021 年 9 月发布。

有什么存货?

作为 Kotliner,我们喜欢写类似

var s = resources.getString(R.string.app_name)

或者val,如果s不改变。

从 Java 10开始,这也是可能的:

var s = context.getString(R.string.app_name);

如果需要,您可以进行s最终处理。我们在这里看到的称为局部类型推断。不错,不是吗?但是请记住,它不能在块、方法和构造函数之外工作。

Java 11 添加var了 lambda 参数。

var list = Arrays.asList("Hello", "Android");
var result = list.stream()
    .map((var x) -> x.toUpperCase(Locale.getDefault()))
    .collect(Collectors.joining(", "));

也有一些新的方法String:isBlank(), lines(), strip(), stripLeading(), stripTrailing(), 和repeat(). 遗憾的是,我们不能使用它们(在撰写本文时)。那是因为 Android 类库是 Java 类库和 Android 特定包的组合。对 OpenJDK 类库的更改不会自动成为 Android 的一部分。相反,它们是手工挑选的。实际上,每个 API 级别都会看到一些正在移植的更改。例如,使用 API 级别 31,我们将compareUnsigned()进入java.lang.Short. 它在 Java 9 中首次亮相。

甚至更老的是 try-with-resources:Java 7 中最酷、可能最少使用的特性之一。看看:

FileInputStream fis = null;
try {
  fis = context.openFileInput("myfile.txt");
  // do some work
} catch (FileNotFoundException e) {
  Log.e(TAG, "something went wrong", e);
}
if (fis != null) {
  try {
    fis.close();
  } catch (IOException e) {
    Log.e(TAG, "something went wrong", e);
  }
}

是的,这是样板代码。但是这个怎么样?

try (FileInputStream fis = context.openFileInput("myfile.txt")) {
  // do some work
} catch (IOException e) {
  Log.e(TAG, "something went wrong", e);
}

如果您想知道…不,我没有忘记close(). 这是自动完成的。下一个…

try {
  var fis = context.openFileInput("myfile.txt");
  // do some work
} catch (IOException e) {
  Log.e(TAG, "something went wrong", e);
} catch (IllegalArgumentException e) {
  Log.e(TAG, "something went wrong", e);
} catch (NullPointerException e) {
  Log.e(TAG, "something went wrong", e);
}

是的,这里肯定有问题。

为什么不这样呢?

try {
  var fis = context.openFileInput("myfile.txt");
} catch (IOException |
    IllegalArgumentException |
    NullPointerException e) {
  Log.e(TAG, "something went wrong", e);
}

从 Java 7 开始,一个catch块可以处理不止一种类型的异常。这可以减少代码重复。而且您不再有catching的解释Throwable。🤣

样板代码的另一个来源是匿名内部类

Button b = findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    // do some work
  }
});

我们可以将其缩小为:

Button b = findViewById(R.id.button);
b.setOnClickListener(view -> {
  // do some work
});

如您所见,Java 仍然面临的一些偏见(在某种程度上)不再有效。开发人员可以对其代码进行现代化改造。你可以做很多事情。

结论

对旧的 Java 代码进行现代化改造无疑是值得的。首先,它变得更容易阅读。其次,您将能够删除大量样板代码。第三,您的应用程序将变得不那么容易出错。不相信我?老实说,你的代码真的放在close()里面了吗try?catch…嗯,你应该。并且通过 try-with-resources 您可以免费获得它。

Android开发语言及编程:Java和Kotlin Android开发语言主要包括Java和Kotlin,开发者可以根据自己的喜好和项目需求选择合适的语言。无论选择哪种语言,Android开发者都可以利用Android SDK提供的功能和库,开发出高质量的Android应用程序。为了开发Android应用程序,开发者可以使用多种编程语言,但最常用的是Java和Kotlin。此外,Java和Kotlin可以在同一个项目中混合使用,开发者可以逐步将现有的Java代码迁移到Kotlin,以便享受Kotlin的优势。关键字代替了Java中的变量声明,使用。 阅读详情

相关推荐

RK3308B开发板WiFi+蓝牙一体模组RTL8821CS驱动移植保姆级教程(含DTS配置与避坑点)

本文提供RK3308B开发板RTL8821CS WiFi+蓝牙模组驱动移植的完整教程,涵盖SDK环境配置、DTS设备树设置、内核编译优化及功能验证全流程。重点解析引脚复用冲突、电源管理等关键配置,并给出常见错误解决方案,帮助开发者快速实现双模通信功能。

weixin_42531163的博客 398

推荐项目:Contact Store —— 简化Android联系人管理的现代API

推荐项目:Contact Store —— 简化Android联系人管理的现代API 在安卓开发领域,处理联系人数据常常让开发者头疼。传统的通过Content Providers访问联系人的方法虽然功能强大,但其复杂性和易错性经常成为开发者的一大挑战。因此,我们今天要推荐的开源项目——Contact Store,正是为了解决这一痛点而生,它提供了一个现代化且易于使用的接触点,简化了Android...

gitblog_00892的博客 767

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9278

Android 手机的高级终端 Termux 安装使用、busybox、安卓 手机 web

手机已经 root安装 tsu,这是一个 su 的 Termux 版本,是一个真正的 root 权限,用来在 Termux上替代su,操作不慎可能对手机有安全风险,因为官方封装了,所以安装也很简单:安装 tsu:pkg install tsu -y切换到 root:tsu退出 root:exittsu切换 root 用户时会弹出 root 授权提示,给予其 root 权限即可。在管理员身份下输入 exit 可回到普通用户身份。

freeking101的博客 10万+

PCIE Lane Margining Linux 环境配置

Copy all the provided files in folder PYC38 or PYC310 to the created pcie_lmt folder. Index of /ftp/python/3.8.10/Copy below commands to a file and rename it as "scan_pcie.py", the commands are from "685662 PCIe-LMT-Gen4_Gen5-r0p77.pdf" in the lane margi

mysongshine的博客 1439

汽车车牌识别系统实现(二)--车牌定位+代码实现

汽车车牌识别系统实现(二)-- 车牌定位 前言 本人大四计算机视觉处理方面菜鸟一枚,因个人兴趣和毕设的缘故,故而想学习计算机视觉方面的内容,有不正确的地方还等各位大神批评指正。 图像预处理 照相机获取到汽车车牌图像时,绝大多数情况下,图像里只存在一个车牌的情况是不太现实的,一幅图像里存在建筑物、树、其它汽车等等是很正常的;而且绝大多数都会存在噪声点,这种情况下就会对车牌定位和识别造成极大程度的干扰...

奋斗の博客 1万+

java毕设安卓汽车之家APP(开题+源码)

其次,汽车类型与品牌展示模块的开发,通过整合汽车行业的最新数据,实现汽车类型、品牌、型号等信息的全面展示,方便用户进行筛选和对比。通过以上研究内容的实施,旨在打造一款功能强大、操作简便的安卓汽车之家APP,为用户提供优质的汽车信息服务,推动汽车行业的创新发展。再次,汽车展示模块的优化,通过高清图片、详细参数、视频介绍等多种形式,为用户呈现汽车的全方位信息,提升用户的购车体验。此外,汽车订单与退订模块的实现,简化购车流程,实现一键下单、订单跟踪、退订处理等功能,为用户提供便捷、高效的购车服务。

铁川毕设程序 963

面向企业级应用的 SAP UI5 troubleshooting 全景指南:从日志与调试到性能与可测试性

本指南系统化介绍了SAP UI5应用排错的完整流程和工具链。从基础的浏览器开发者工具使用,到SAP UI5专用调试工具(Technical Information Dialog、Support Assistant、Diagnostics Window),再到性能优化和日志管理,提供了一套工程化的解决方案。重点推荐组合使用UI5 Inspector扩展、Test Recorder测试工具以及性能测量模块,并强调将常见问题整理成团队知识库。通过制度化的排错步骤和工具组合,开发者可以快速定位、复现和修复问题,将调

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 286

java毕设安卓基于移动端APP的在线考试系统(开题+源码)

在开发过程中,将重点实现用户注册登录、试卷管理、在线答题、成绩查看等核心功能,同时优化用户体验,确保系统的流畅性和易用性。最终,通过测试和优化,确保系统的稳定性和可靠性,为用户提供一个高效、便捷的在线考试平台。其次,该系统能够提升考试的效率和准确性,通过自动化评分和数据分析,减轻教师的工作负担,同时为学生提供个性化的学习反馈。最终,通过本系统的应用推广,推动在线教育的发展,提升教育质量,为培养更多优秀人才贡献力量。同时,通过系统的应用推广,推动教育信息化的进程,提升教育质量,为培养更多优秀人才做出贡献。

qh604的博客 1032

储能电池管理系统介绍(一)

介绍储能BMS的架构以及各模块功能

manjixingkong1234的专栏 1916

DeepFashion 服装识别:基于 YOLOv10 的深度学习实现与 UI 界面开发

随着深度学习的发展,目标检测算法在服装识别任务中表现出色,特别是 YOLO(You Only Look Once)系列模型。服装识别(Fashion Recognition)是计算机视觉领域的重要任务,广泛应用于。已提供,可用于服装分类、款式识别、虚拟试衣等应用。训练服装识别模型,并开发。

YOLO 803

java毕设安卓面向高校活动聚App(开题+源码)

通过深入研究高校活动的特点和需求,设计并实现用户管理、活动分类、主办方管理、活动信息发布、活动报名、活动总结等系统功能,以满足高校活动的多样化需求。同时,注重用户体验和界面设计,确保App的易用性和美观性。在开发过程中,本研究拟解决的主要问题包括如何确保App的稳定性和安全性,如何优化用户体验以提高用户留存率,以及如何实现系统的可扩展性和可定制性以适应不同高校的需求。通过以上功能的实现,本研究旨在打造一款功能全面、操作便捷、用户体验良好的高校活动App,为高校活动的组织和管理提供有力的技术支持。

光冯毕设程序 1049

基于生存结局(生存分析/COX回归)的中介效应分析

① 建立观察变量OVB和中介变量MVB的回归模型(注意:这里根据mediation包的介绍,需要构建的是probit模型,而不是logist回归模型,网上有很多的代码用的logistic回归,结果自己跑的时候发现报错,我在这里陷了很久;为了方便演示,我们生成了一个协变量(Age)、一个连续型观察变量(liaOVC)、一个二分类观察变量(OVB)、一个连续型中介变量(MVC)、一个二分类中介变量(MVB)以及最后的结局变量(生存时间[time],生存结局[stats])。

m0_61863309的博客 1万+

java毕设安卓心理咨询app(开题+源码)

同时,app可以根据用户的个人情况和需求,提供个性化的心理服务,满足不同用户的需求。从更宏观的角度来看,安卓心理咨询app的推广和应用,有助于提升全社会的心理健康水平,减少因心理问题而引发的社会问题和矛盾。同时,本研究还希望通过app的应用和推广,促进心理健康知识的普及和心理健康服务的优化,为构建和谐社会贡献力量。综上所述,本研究旨在通过开发安卓心理咨询app,解决传统心理咨询方式的局限性,满足用户需求,提升社会心理健康水平,具有重要的现实意义和研究价值。

便捷程序设计 1037

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python写安卓游戏_python写lol游戏脚本(用python开发安卓脚本)

python写lol游戏脚本俾格米人和搅拌机的引擎。python-ogre和panda3d是用c/c编写的,但只提供了一个python接口。 你好,蟒蛇可以在Android上工作。 因为你可以在Android上安装一个pythonruntime,这就行了! 就像Python也可以运行在symbina,windowsmobile,plamos,braws支持上,但是Android开发中使用java的...

weixin_39921087的博客 2078

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

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

基于安卓Android的轻餐饮点餐-皮皮虾APP-毕业设计

随着移动互联网技术的不断发展,人们的日常生活越来越依赖于智能手机中的各种应用程序。在餐饮行业,传统的点餐方式已经逐渐被线上点餐所取代。皮皮虾作为一款基于安卓系统的轻餐饮点餐APP,旨在为用户提供便捷、高效、个性化的点餐体验。

QQ1963288475的博客 1987

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

AudioShare:打破设备壁垒,让Windows音频在安卓设备上“流动“起来

你是否曾有过这样的困扰?电脑上播放的电影声音无法同步到卧室的手机,会议音频只能在固定设备上收听,或者想要在不同房间同步播放音乐却苦于设备间的壁垒?今天,让我们一起探索AudioShare——一款开源工具,它能轻松将Windows电脑的音频实时传输到安卓设备,打造你的多设备音频共享系统。 ## 问题引入:当音频遇到设备壁垒 在日常工作和娱乐中,我们常常面临这样的场景: - **跨设备观影**:

gitblog_00072的博客 1088

电脑windows系统和安卓系统区别

归根结底,Windows系统与Android系统各有所长,适用于不同的使用场景。前者更适合追求高效生产力的专业人士,后者则能带来便捷灵活的移动互联体验。无论您是打算购买新设备还是仅仅出于兴趣想要了解更多相关信息,希望以上内容可以帮助您做出更加明智的选择。同时提醒广大用户朋友,在享受科技带来的便利之时也不要忘记维护好个人信息安全哦!

小发猫 6039

java毕设安卓校园电子图书馆APP(开题+源码)

最终,通过这款APP的推广和应用,推动校园图书馆的数字化进程,提升图书馆在校园文化建设中的地位和作用。这款APP旨在利用移动互联网的便捷性,将图书馆的资源与服务数字化、网络化,为学生提供更加高效、便捷的阅读和学习体验。其次,通过移动应用的方式,学生可以随时随地访问图书馆资源,打破了时间和空间的限制,提高了学习的灵活性和自主性。此外,APP中的座位预约、图书分类、借阅信息等功能,能够极大地提升图书馆的管理效率和服务质量,为学生创造一个更加舒适、便捷的学习环境。第一阶段: 熟悉工具,查阅相关资料(1周)

qh602的博客 1359

java毕设安卓基于vue的历史博物馆APP(开题+源码)

同时,注重用户体验的研究和设计,通过用户调研和测试,不断优化APP的界面设计和交互逻辑,提高用户的满意度和忠诚度。因此,需要注重用户体验的研究和设计,不断优化APP的使用流程和交互方式,提高用户的满意度和忠诚度。其次,对博物馆的信息管理系统和数据进行调研和分析,了解文物信息和展品信息的存储方式和数据结构,设计合理的数据库和API接口,实现信息的准确展示和高效查询。二是提升博物馆的信息化水平和数字化传播能力,通过APP的推广和使用,扩大博物馆的影响力和知名度,吸引更多公众关注和参与历史文化的传承和弘扬。

qh604的博客 1270

安卓毕业设计springboot基于安卓的康养旅游管理APP

基于Spring Boot并结合安卓平台的康养旅游管理APP是一种创新性的旅游服务应用,它融合了现代Web开发技术和移动应用开发的优势,为康养旅游行业提供了高效、便捷的管理工具。以下是对该APP的详细介绍:一、系统背景与需求分析随着社会经济的快速发展和人们生活水平的不断提高,康养旅游逐渐成为一种新兴的旅游方式,它不仅能够提供休闲娱乐,还能促进身心健康,满足人们对高质量生活的追求。然而,康养旅游涉及的环节众多,包括餐饮、住宿、交通、景点等多个方面,管理复杂度高。

m0_50936939的博客 1105

java毕设安卓基于的物业小区管理系统(开题+源码)

此外,该系统的应用还能够促进物业与业主之间的沟通交流,增强彼此间的信任与合作,构建和谐的居住环境。具体而言,基于安卓平台的物业小区管理系统能够实现多种功能的整合与优化,如车位信息的实时更新、缴费类型的多样化选择、报修投诉的快速处理等,这些都将极大地提升物业管理的专业性和服务质量,为居民提供更加舒适、安全的居住环境。二是提升业主的满意度和幸福感,增强业主对物业的信任和支持;同时,通过本研究的开展,我们还希望能够为相关领域的研究和实践提供一定的参考和借鉴,推动物业管理信息化、智能化水平的不断提升。

qh602的博客 839

Winlator终极指南:在安卓设备上运行Windows应用的完整教程

Winlator是一款革命性的开源Android应用程序,它通过Wine和Box86/Box64技术让您在安卓设备上运行Windows应用程序。这个免费的解决方案为移动设备用户提供了前所未有的跨平台兼容性体验,让您随时随地享受Windows应用的便利。 ## Winlator项目核心技术解析 Winlator项目的成功离不开三大核心技术组件的协同工作: **Wine兼容层**:作为项目的基础

gitblog_00595的博客 735

安卓毕业设计springboot基于Android的乡村研学旅行APP

Spring Boot基于Android的乡村研学旅行APP是一个集成了多种功能和服务的应用程序,旨在为用户提供便捷、全面的乡村研学旅行体验。以下是对该APP的详细介绍:一、技术架构后端框架:Spring Boot,以其高效、便捷、灵活的特点,成为构建此APP后端服务的首选框架。它简化了企业级应用的开发过程,提供了自动配置、快速启动和强大的集成能力。前端平台:Android,作为移动应用开发的主流平台,为用户提供了直观、易用的界面和交互体验。

m0_50936939的博客 689

计算机毕业设计选题推荐-网上花店微信小程序/安卓APP

随着互联网的普及和电子商务的快速发展,越来越多的人选择在网上购买商品。鲜花作为一种典型的礼品,其销售也受到了很大的影响。传统的实体花店存在很多局限性,比如时间和空间的局限、信息不对称等问题,这使得许多消费者无法方便快捷地购买到心仪的鲜花。因此,开发一款基于移动设备的网上花店微信小程序/安卓APP,可以更好地满足消费者对鲜花购买的需求。本选题旨在开发一款基于移动设备和网络技术的网上花店微信小程序/安卓APP。

IT研究室的博客 517

Android Visualizer 实战:把声音画出来

是系统提供的音频效果(AudioEffect)之一。它挂在音频链路上,,把数据回吐给你——画波形、画频谱、做响度表。

Android的专栏 301
上一篇: Android 应用的电池优化
下一篇: 使用 Android Studio 创建测验应用
不秃头de程序猿
博客等级 码龄5年 4089粉丝 1478原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值