Android 碎片化
Android Fragmentation
我对android碎片感到困惑。我知道内存碎片但无法理解什么是android碎片问题。虽然我发现很多定义,比如
Android fragmentation refers to a concern over the alarming number of
different available Android operating system (OS) versions in the
market. The main issue is potentially reduced interoperability between
devices of applications coded using the Android Software Development
Kit (Android SDK).
谁能简单解释一下这个现象。 ??
这不是内存碎片之类的技术问题。在此上下文中,"fragmentation" 一词指的是用户体验(菜单项四处移动等)和开发人员体验(API 可用等)从一个版本 Android到下一个。有时面向开发人员的 API 更改会影响用户体验。例如,用户最喜欢的小部件可能会在 Android 的最新版本上停止工作,因为 Google 决定破坏它所依赖的某些 API。供应商和运营商通过他们安装的所有自定义设置以及奇怪的设备特定错误使情况变得更糟。最终结果是 实际上有数百个不同版本的 Android 而不是十几个。仅仅让一个应用程序在所有这些平台上达到 运行 就变得非常困难,更不用说提供一致的用户体验了。
我认为没有人曾尝试为这种碎片化开发一个指标,所以很难说 Android 是否真的比其他平台更碎片化。我的印象是,但是我的比较标准是J2SE API.
简而言之,有太多 Android 设备具有不同的 OS 版本、屏幕尺寸、不同的硬件规格等,预计所有这些 运行 Android 开发的每个应用程序在性能、可靠性等方面都没有任何明显差异。
示例:
Fragment
& ActionBar
类 是在 API 级别 11 中引入的。多个 AsyncTask
将 运行 并行分离线程在 API 级 8 和 10 之间,以及从 API 级 11 开始连续。这要求开发人员了解不同 OS 版本上的应用程序行为。为了帮助开发人员,Google 提供了支持库,这些库可以在没有这些功能的旧平台上提供更新的 API。最新版本的支持库可让您在旧平台上获得新的 Material Design
功能。
- 应用的 UI 需要在平板电脑、平板手机和类似手机上保持一致。这就是 Android 框架迫使开发人员将布局准备为 XML 层次结构的原因:这是一种自缩放方法,可以在不同屏幕上以正确的比例自动缩放和定位 UI 元素,并且浆纱。此外,应用程序可以根据屏幕尺寸和 OS 版本显示完全不同的 UIs',Play 商店甚至允许您为不同的屏幕尺寸或不同的 OS 版本上传不同的应用程序版本.
- 具有特殊硬件要求的应用程序也不会 运行 在没有这些功能的手机上。例如,像
Asphalt
这样的游戏需要非常强大的 processor/GPU 和大量内存,并且不能 运行 在低端设备上运行。有些应用程序需要某些特定的传感器,在没有这些传感器的手机上甚至不会出现在 Play 商店中。低功耗蓝牙 (BLE) 功能是在 API 级别 17 上引入的,不会在较低的平台上 运行。
AndroidSDK旨在帮助开发者克服碎片化问题。
我对android碎片感到困惑。我知道内存碎片但无法理解什么是android碎片问题。虽然我发现很多定义,比如
Android fragmentation refers to a concern over the alarming number of different available Android operating system (OS) versions in the market. The main issue is potentially reduced interoperability between devices of applications coded using the Android Software Development Kit (Android SDK).
谁能简单解释一下这个现象。 ??
这不是内存碎片之类的技术问题。在此上下文中,"fragmentation" 一词指的是用户体验(菜单项四处移动等)和开发人员体验(API 可用等)从一个版本 Android到下一个。有时面向开发人员的 API 更改会影响用户体验。例如,用户最喜欢的小部件可能会在 Android 的最新版本上停止工作,因为 Google 决定破坏它所依赖的某些 API。供应商和运营商通过他们安装的所有自定义设置以及奇怪的设备特定错误使情况变得更糟。最终结果是 实际上有数百个不同版本的 Android 而不是十几个。仅仅让一个应用程序在所有这些平台上达到 运行 就变得非常困难,更不用说提供一致的用户体验了。
我认为没有人曾尝试为这种碎片化开发一个指标,所以很难说 Android 是否真的比其他平台更碎片化。我的印象是,但是我的比较标准是J2SE API.
简而言之,有太多 Android 设备具有不同的 OS 版本、屏幕尺寸、不同的硬件规格等,预计所有这些 运行 Android 开发的每个应用程序在性能、可靠性等方面都没有任何明显差异。
示例:
Fragment
&ActionBar
类 是在 API 级别 11 中引入的。多个AsyncTask
将 运行 并行分离线程在 API 级 8 和 10 之间,以及从 API 级 11 开始连续。这要求开发人员了解不同 OS 版本上的应用程序行为。为了帮助开发人员,Google 提供了支持库,这些库可以在没有这些功能的旧平台上提供更新的 API。最新版本的支持库可让您在旧平台上获得新的Material Design
功能。- 应用的 UI 需要在平板电脑、平板手机和类似手机上保持一致。这就是 Android 框架迫使开发人员将布局准备为 XML 层次结构的原因:这是一种自缩放方法,可以在不同屏幕上以正确的比例自动缩放和定位 UI 元素,并且浆纱。此外,应用程序可以根据屏幕尺寸和 OS 版本显示完全不同的 UIs',Play 商店甚至允许您为不同的屏幕尺寸或不同的 OS 版本上传不同的应用程序版本.
- 具有特殊硬件要求的应用程序也不会 运行 在没有这些功能的手机上。例如,像
Asphalt
这样的游戏需要非常强大的 processor/GPU 和大量内存,并且不能 运行 在低端设备上运行。有些应用程序需要某些特定的传感器,在没有这些传感器的手机上甚至不会出现在 Play 商店中。低功耗蓝牙 (BLE) 功能是在 API 级别 17 上引入的,不会在较低的平台上 运行。
AndroidSDK旨在帮助开发者克服碎片化问题。