热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android开发新技术

Android开发新技术最新改变Jetpack组件库(共85个)Flutter技术示例代码框架特性最新改变每年910月份Google都会举行约为期2天


Android开发新技术

  • 最新改变
  • Jetpack
    • 组件库(共85个)
  • Flutter技术
    • 示例代码
    • 框架特性


最新改变

每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分享 Android 的最新技术动向及开发心得。
今年 Summit 的 Slogan 是 “Excellent apps,across devices” , 即使用 Jetpack 等 MAD Skill (Moden Android Development) 开发出更优秀的应用,并通过 Android 系统落地到更多种类的智能设备。本次活动围绕这一主旨做了 30 多场技术分享(视频),涉及多个方向:
Android 12
12L
Building across screens
Kotlin
Jetpack
Jetpack Compose
Android Studio
AGP
在这里,我将重点介绍Jetpack组件库,除此之外,还会再讲讲Flutter技术。


Jetpack

Jetpack作为2021年Android 界最火的组件库,使用更方便、向后兼容、支持RxJava、减少代码量、无需捆绑等优点,也是谷歌想拓展和维护的方向。由于长期苦恼于第三方库选择的广大Android开发者而言,这也是谷歌为我们提供的一盏明灯。

Jetpack 可帮助开发人员遵循最佳实践,减少样板代码并编写可在 Android 版本和设备上一致工作的代码,以便开发人员可以专注于他们关心的代码。


组件库(共85个)

Jetpack组件库第一个是核心类(8个),你也可以把它理解为基础类,也就是说我们一个最基本的 Android 工程都会默认依赖这些组件库。
核心库
第二个是架构组件(10个),Jetpack 推出之后很令人兴奋的一点,就是 Google 引入了现代 Android 应用开发的架构指南,结合 MVVM 的架构设计,帮助我们轻松的处理 UI 与业务逻辑之间的关系。
架构组件
第三个是 UI 组件(22个),这里需要说明一点,大多数的 UI 组件其实都包含着核心组件中的 appcompat * 中了,这里列出的是 Jetpack 中以独立组件库存在的 UI 组件。
UI组件
第四个是特殊业务组件(16个),根据不同的业务场景,选择性使用。
特殊业务组件
第五个是用不着的组件(15个),这个完全是处于我个人出发,目前我从事的是 Android 互联网项目的开发,所以涉及游戏、车载、TV 等或平时极少使用的组件,我都规整到这一类中了。
用不着组件
第六个是弃用的组件(11个),有一些是因为官方不再更新维护了,有一些是在 Jetpack 中有更好的替代解决方案,如果我们的项目中还在使用这些组件库的话,建议尽快替换到最新的替代组件上。
弃用组价
第七个是用于测试的组件(2个)。
测试组件


Flutter技术

Flutter是谷歌的推出的跨平台UI框架,可以快速在iOS和Android上构建高质量的原生用户界面,可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。这是谷歌的原话。就在近期 Flutter 2.5发布了,可以看官方对出Flutter 输出一直很稳定,社区也非常活跃。不过 Flutter 的相关的争议一直没有停止过,有人觉得 Flutter 可以算是当今跨平台的最佳方案,也有人觉得 Flutter 的实际表现低于预期,甚至流传出有大厂正在放弃 Flutter 这样的话。不过Flutter作为 Google 的亲儿子,其官方的扶持力度大家都有目共睹。


示例代码

Hello World!


import ‘package:flutter/material.dart’;
void main() {
runApp(new Center(
child: new Text(‘Hello World!’)
));
}


在Dart2.0版本之后,可以省略new。


import ‘package:flutter/material.dart’;
void main() {
runApp(Center(
child: Text(‘Hello World!’)
));
}


一些优势:
------比 Android 原生上更高效地构建漂亮的自定义 UI
------跨平台能力,一套代码可以在多端运行,例如:Android、iOS、Web等
------Flutter 的高性能和UI 上表现的一致性
------开发效率高
------提供了许多开箱即用的强大功能

一些弊端:
------虽说跨平台,但部分能力依然依赖原生代码
------混合开发模式的效率问题,始终是个痛点
------Dart 带来的学习成本较高
------三方库不健全
------一切皆 Widget 带来的混乱


框架特性

快速开发
Flutter的热重载帮助你快捷方便的试验、重构UI、添加特性和修复bug。在仿真器、模拟器和ios、android硬件上体验亚秒级的重载,而不会丢失状态。
在这里插入图片描述
绚丽UI
通过Flutter内建的漂亮的质感设计和Cupertino(ios-flavor)小工具、丰富的动画API,平滑的自然滚动和平台感知,让用户感到满意。

响应式
通过Flutter的现代响应式(Reactive)框架和丰富的平台布局和基础组件轻松构建您的用户界面。用强大而灵活的API解决2D、动画、手势、效果等难题。
在这里插入图片描述


class CounterState extends State {
int counter = 0;
void increment() {
// 通知Flutter框架状态已改变
// 因此框架可以运行build()并更新显示
setState(() {
counter++;
});
}
Widget build(BuildContext context) {
// 这个方法会在每次setState调用时运行
// Flutter框架已经对重复快速运行build方法进行优化
// 因此你可以仅更新你想要更新的任何东西,而不必
// 更新整个组件实例。
return Row(
children: [
RaisedButton( o
nPressed: increment,
child: Text(‘Increment’),
),
Text(‘Count: $counter’),
],
);
}
}


访问原生功能
通过平台api、第三方sdk和原生代码使您的应用变得生动起来。Flutter让您可以重用您现有的java、swift和Objc代码,并在iOS和Android上访问原生特性和SDK。
访问平台功能非常简单。这是互操作示例的片段:


Future getBatteryLevel() async {
var batteryLevel = ‘unknown’;
try {
int result = await methodChannel.invokeMethod(‘getBatteryLevel’);
batteryLevel = ‘Battery level: $result%’;
} on PlatformException {
batteryLevel = ‘Failed to get battery level.’;
}
setState(() {
_batteryLevel = batteryLevel;
})


作者:王健业

原文链接


推荐阅读
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • Windows 系统中 Flutter 与 IntelliJ IDEA 的环境配置指南
    本指南详细介绍了如何在 Windows 操作系统上设置 Flutter 开发环境,并集成至 IntelliJ IDEA 中,适合初学者及专业人士参考。 ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 在使用 MUI 框架进行应用开发时,开发者常常会遇到 mui.init() 和 mui.plusReady() 这两个方法。本文将详细解释它们的区别及其在不同开发环境下的应用。 ... [详细]
author-avatar
mobiledu2502891413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有