API Change Statistics

The overall difference between API Levels 16 and 17 is approximately 1.26%.


Total of Differences, by Number and Type

The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were added, changed, or removed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.

Type Additions Changes Removals Total
Packages 2 35 0 37
Classes and Interfaces 41 111 2 154
Constructors 2 1 0 3
Methods 150 37 19 206
Fields 155 69 3 227
Total 350 253 24 627

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
31 android.telephony
13 android.opengl
10 android.text.format
9 android.net.http
6 android.renderscript
4 android.nfc.tech
4 android.telephony.cdma
4 android.webkit
3 android.appwidget
3 android.location
2 android.app.admin
2 android.os
2 android.content.pm
1 android
1 android.util
1 android.accessibilityservice
1 android.view
1 android.text.style
1 android.inputmethodservice
1 android.view.accessibility
1 android.widget
<1 android.app
<1 android.test.mock
<1 android.hardware
<1 android.provider
<1 android.content
<1 android.view.inputmethod
<1 android.net.wifi
<1 android.content.res
<1 android.net
<1 android.bluetooth
<1 android.media
<1 android.database
<1 android.graphics
<1 android.text

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
44 android.Manifest.permission_group
32 android.location.LocationProvider
28 android.view.ViewGroup.MarginLayoutParams
26 android.text.format.DateFormat
25 android.view.Display
25 android.widget.DigitalClock
23 android.util.FloatMath
21 android.content.IntentSender
17 android.content.pm.PermissionGroupInfo
15 android.text.format.DateUtils
14 android.view.ContextThemeWrapper
13 android.os.PowerManager
12 android.provider.Settings.System
12 android.provider.Settings.Secure
11 android.webkit.WebHistoryItem
10 android.widget.RelativeLayout
10 android.appwidget.AppWidgetProviderInfo
10 android.widget.TwoLineListItem
9 android.hardware.Camera.CameraInfo
9 android.os.SystemClock
8 android.os.PowerManager.WakeLock
7 android.app.PendingIntent
7 android.webkit.WebView
7 android.inputmethodservice.AbstractInputMethodService
7 android.content.pm.ProviderInfo
7 android.provider.MediaStore
7 android.renderscript.Script
6 android.webkit.WebSettings
6 android.inputmethodservice.AbstractInputMethodService.AbstractInputMethodSessionImpl
6 android.net.wifi.ScanResult
6 android.view.SurfaceView
6 android.webkit.WebViewDatabase
6 android.content.res.Configuration
6 android.graphics.Bitmap
5 android.bluetooth.BluetoothA2dp
5 android.net.SSLCertificateSocketFactory
5 android.view.Gravity
5 android.content.pm.PermissionInfo
5 android.content.pm.ServiceInfo
5 android.media.MediaRouter.Callback
5 android.widget.CheckedTextView
5 android.widget.RelativeLayout.LayoutParams
5 android.provider.CallLog.Calls
4 android.test.mock.MockContext
4 android.app.admin.DevicePolicyManager
4 android.content.ContextWrapper
4 android.media.MediaRouter.RouteInfo
4 android.view.ViewGroup.LayoutParams
4 android.view.inputmethod.InputMethodSession
4 android.telephony.PhoneStateListener
4 android.view.accessibility.AccessibilityEvent
4 android.appwidget.AppWidgetHost
4 android.os.RemoteCallbackList
4 android.telephony.cdma.CdmaCellLocation
4 android.content.Context
3 android.media.MediaPlayer
3 android.view.Surface
3 android.widget.TextView
3 android.content.ContentProviderClient
3 android.view.inputmethod.InputMethodSubtype
3 android.widget.ViewAnimator
3 android.view.accessibility.AccessibilityNodeInfo
3 android.view.View
3 android.database.DatabaseUtils.InsertHelper
3 android.media.MediaRouter
2 android.content.pm.ApplicationInfo
2 android.appwidget.AppWidgetManager
2 android.util.DisplayMetrics
2 android.util.LruCache
2 android.os.Build.VERSION_CODES
2 android.content.pm.ActivityInfo
2 android.os.Binder
2 android.widget.SlidingDrawer
2 android.content.pm.ResolveInfo
2 android.location.Location
2 android.hardware.Sensor
2 android.app.FragmentManager
2 android.widget.AutoCompleteTextView
2 android.app.Fragment
2 android.app.admin.DeviceAdminInfo
2 android.provider.CalendarContract.CalendarColumns
2 android.widget.VideoView
2 android.webkit.WebChromeClient
1 android.app.WallpaperManager
1 android.os.BatteryManager
1 android.net.LocalSocket
1 android.accessibilityservice.AccessibilityServiceInfo
1 android.provider.CalendarContract.EventsColumns
1 android.net.ConnectivityManager
1 android.app.Notification.Builder
1 android.os.Process
1 android.accessibilityservice.AccessibilityService
1 android.R.attr
1 android.content.pm.PackageManager
1 android.hardware.Camera
1 android.media.MediaRecorder
1 android.app.AlertDialog.Builder
1 android.content.Intent
1 android.media.AudioManager
1 android.media.MediaMetadataRetriever
1 android.text.TextUtils
1 android.graphics.Paint
<1 android.widget.RemoteViews
<1 android.telephony.TelephonyManager
<1 android.test.mock.MockPackageManager
<1 android.inputmethodservice.InputMethodService
<1 android.opengl.GLES20
<1 android.R.style
<1 android.view.WindowManager.LayoutParams
<1 android.hardware.Camera.Parameters
<1 android.app.Activity

* See Calculation of Change Percentages, below.


Calculation of Change Percentages

The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

Percentage difference = 100 * (added + removed + 2*changed)
                        -----------------------------------
                        sum of public elements in BOTH APIs

where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. The definition ensures that if all packages are removed and all new packages are added, the change will be 100%.