API Change Statistics

The overall difference between API Levels 18 and 19 is approximately 2.63%.


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 6 48 0 54
Classes and Interfaces 78 180 0 258
Constructors 20 3 0 23
Methods 268 26 5 299
Fields 391 6 0 397
Total 763 263 5 1031

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
36 android.view.accessibility
30 android.hardware.display
8 android.media
7 android.provider
6 android.hardware
5 android.nfc
4 android.security
4 android.location
4 android.media.audiofx
4 java.nio.charset
4 android.content.res
4 android.view.inputmethod
3 android.animation
3 java.lang
3 javax.crypto.spec
2 android.content
2 java.util.zip
2 javax.crypto
2 android.app
2 android.bluetooth
2 android.util
2 android.os
1 android.renderscript
1 android.graphics
1 android.webkit
1 android.database
1 java.util
1 java.lang.reflect
1 java.io
<1 android.graphics.drawable
<1 org.json
<1 android.speech.tts
<1 android.view
<1 android.content.pm
<1 android.net
<1 android.test.mock
<1 java.net
<1 java.nio.channels
<1 android.widget
<1 android
<1 android.net.wifi
<1 android.text.method
<1 java.nio
<1 android.opengl
<1 android.preference
<1 java.util.logging
<1 android.telephony
<1 java.sql

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
50 android.content.res.XmlResourceParser
50 android.media.RemoteControlClient.MetadataEditor
50 android.webkit.WebStorage.QuotaUpdater
50 java.io.Closeable
42 android.media.MediaCodec.CryptoException
40 android.bluetooth.BluetoothAssignedNumbers
36 android.provider.AlarmClock
33 android.database.MatrixCursor.RowBuilder
33 java.util.ConcurrentModificationException
26 android.renderscript.ScriptIntrinsicColorMatrix
25 android.graphics.SurfaceTexture.OutOfResourcesException
25 android.hardware.display.DisplayManager
25 android.view.Surface.OutOfResourcesException
25 java.lang.IllegalAccessException
25 java.lang.InstantiationException
25 java.lang.NoSuchFieldException
25 java.lang.NoSuchMethodException
25 java.util.zip.GZIPOutputStream
24 java.lang.Character.UnicodeBlock
20 android.view.ViewParent
20 java.lang.LinkageError
20 java.util.Currency
17 android.security.KeyPairGeneratorSpec
17 java.util.zip.DeflaterOutputStream
17 android.nfc.NfcAdapter
17 android.os.ParcelFileDescriptor
17 android.os.Debug.MemoryInfo
16 android.app.Notification
16 android.animation.AnimatorListenerAdapter
16 android.view.inputmethod.InputMethodSubtype
15 android.security.KeyPairGeneratorSpec.Builder
15 android.graphics.NinePatch
14 android.content.ContentProviderClient
13 java.util.BitSet
13 android.media.MediaFormat
12 java.lang.ClassNotFoundException
12 java.lang.reflect.InvocationTargetException
11 android.animation.Animator
11 android.view.accessibility.AccessibilityNodeProvider
11 android.widget.PopupMenu
10 android.provider.CallLog.Calls
10 android.bluetooth.BluetoothDevice
10 android.graphics.SurfaceTexture
10 android.view.accessibility.AccessibilityManager
9 android.view.ScaleGestureDetector
9 java.lang.Throwable
9 android.view.accessibility.AccessibilityNodeInfo
9 android.app.Notification.BigTextStyle
9 android.app.Notification.InboxStyle
8 android.content.ContentProvider
8 android.hardware.Sensor
8 java.lang.reflect.Modifier
8 android.media.audiofx.Visualizer
8 java.io.FileInputStream
8 java.io.ObjectOutput
7 android.app.ActivityManager
7 android.app.Notification.BigPictureStyle
7 android.widget.FrameLayout.LayoutParams
7 android.app.WallpaperManager
7 android.content.ContentResolver
7 android.content.res.AssetFileDescriptor
7 android.net.LocalSocket
7 java.io.ObjectInput
6 android.media.MediaMuxer
6 java.util.zip.Deflater
6 android.app.AlarmManager
6 android.app.Notification.Style
6 java.io.FileOutputStream
6 android.view.accessibility.AccessibilityEvent
5 android.graphics.drawable.ColorDrawable
5 android.media.MediaCodec
5 android.media.MediaPlayer.TrackInfo
5 android.media.MediaRecorder.AudioSource
5 android.speech.tts.SynthesisRequest
5 android.widget.LinearLayout.LayoutParams
5 java.lang.AssertionError
5 java.net.NetworkInterface
5 android.graphics.Bitmap
5 android.bluetooth.BluetoothGatt
5 android.graphics.ImageFormat
5 android.graphics.drawable.InsetDrawable
5 android.os.Environment
5 java.nio.channels.FileLock
5 android.provider.Settings.Secure
5 android.net.DhcpInfo
5 android.view.Display
5 javax.crypto.CipherSpi
4 android.content.pm.ComponentInfo
4 android.widget.RelativeLayout.LayoutParams
4 java.net.InetSocketAddress
4 android.bluetooth.BluetoothHeadset
4 java.nio.channels.Selector
4 android.content.IntentFilter
4 android.graphics.PixelFormat
4 java.util.zip.ZipFile
4 android.media.RingtoneManager
4 android.view.InputDevice
4 android.webkit.WebChromeClient
4 java.lang.Boolean
3 android.Manifest.permission
3 android.text.method.MetaKeyKeyListener
3 android.media.RemoteControlClient
3 android.provider.Settings
3 javax.crypto.Cipher
3 android.content.pm.ProviderInfo
3 android.widget.ListView
2 android.graphics.drawable.Drawable
2 android.media.AudioTrack
2 android.net.wifi.WifiManager
2 android.util.SparseArray
2 android.webkit.WebView
2 java.lang.Character
2 java.lang.Byte
2 java.util.Collections
2 android.opengl.Matrix
2 android.util.DisplayMetrics
2 java.lang.Short
2 android.graphics.Path
2 android.graphics.BitmapFactory.Options
2 android.os.Build.VERSION_CODES
2 org.json.JSONArray
2 android.content.Context
2 android.content.pm.ResolveInfo
2 android.graphics.drawable.DrawableContainer.DrawableContainerState
2 java.net.InetAddress
2 java.net.ServerSocket
2 android.os.UserManager
2 android.webkit.WebSettings
2 android.media.AudioManager
2 android.media.MediaCodecInfo.CodecCapabilities
1 android.view.Window
1 android.content.pm.PackageManager
1 android.widget.VideoView
1 android.hardware.SensorManager
1 android.widget.AbsListView
1 android.widget.ListPopupWindow
1 java.net.HttpURLConnection
1 android.test.mock.MockContext
1 android.view.View
1 android.content.ContextWrapper
1 android.graphics.drawable.BitmapDrawable
1 java.lang.System
1 android.view.WindowManager.LayoutParams
1 android.app.Notification.Builder
1 android.media.MediaDrm
1 android.view.ViewPropertyAnimator
1 java.nio.CharBuffer
1 android.media.MediaPlayer
1 java.net.DatagramSocket
1 java.lang.Integer
1 java.lang.Long
1 android.telephony.TelephonyManager
1 android.preference.PreferenceActivity
1 android.media.audiofx.AudioEffect
1 android.test.mock.MockCursor
1 android.database.CursorWrapper
1 android.location.LocationManager
1 android.R.attr
1 android.database.Cursor
1 android.view.inputmethod.InputMethodManager
1 org.json.JSONObject
1 java.sql.Statement
1 java.util.logging.Logger
1 java.net.Socket
<1 java.sql.Connection
<1 android.widget.PopupWindow
<1 android.content.Intent
<1 android.view.ViewGroup
<1 java.util.Scanner
<1 android.renderscript.Allocation
<1 android.test.mock.MockPackageManager
<1 android.renderscript.Element
<1 android.preference.Preference
<1 android.content.res.Configuration
<1 android.graphics.Paint
<1 android.R.style
<1 android.view.MotionEvent
<1 android.app.Activity
<1 java.sql.ResultSet
<1 android.view.KeyEvent

* 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%.