API Change Statistics

The overall difference between API Levels 2 and 3 is approximately 4.33%.


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 36 0 42
Classes and Interfaces 67 181 0 248
Constructors 36 3 1 40
Methods 386 64 5 455
Fields 296 68 1 365
Total 791 352 7 1150

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
33 android.opengl
27 android.media
24 android.text.style
22 android.hardware
22 android.location
13 android.content.res
12 dalvik.system
9 android.telephony
9 android.text.method
8 android.app
8 android.test
7 android
7 android.text
6 android.provider
6 android.view
5 android.widget
5 android.os
4 android.test.suitebuilder
4 android.webkit
3 android.content.pm
2 android.util
1 android.content
1 java.util.jar
1 android.graphics.drawable.shapes
<1 android.net
<1 android.graphics.drawable
<1 java.util.logging
<1 android.test.mock
<1 android.view.animation
<1 android.net.wifi
<1 android.telephony.gsm
<1 android.database
<1 android.graphics
<1 android.database.sqlite
<1 android.preference
<1 java.lang

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
84 android.test.TouchUtils
81 dalvik.system.Zygote
66 android.webkit.UrlInterceptHandler
61 android.provider.MediaStore
53 android.view.GestureDetector
50 android.app.LauncherActivity
50 android.text.style.AlignmentSpan.Standard
50 android.text.style.StrikethroughSpan
50 android.text.style.UnderlineSpan
50 android.widget.PopupWindow.OnDismissListener
48 android.app.AlertDialog
46 android.content.DialogInterface
45 android.view.ViewConfiguration
42 android.text.method.KeyListener
40 android.text.Annotation
40 android.text.style.BackgroundColorSpan
40 android.text.style.ForegroundColorSpan
40 android.text.style.SubscriptSpan
40 android.text.style.SuperscriptSpan
40 android.text.style.URLSpan
39 android.media.MediaRecorder
38 android.text.style.DynamicDrawableSpan
36 android.content.res.AssetFileDescriptor
36 android.location.LocationManager
34 android.hardware.SensorManager
33 android.text.AutoText
33 android.text.method.Touch
33 android.text.style.AbsoluteSizeSpan
33 android.text.style.LeadingMarginSpan.Standard
33 android.text.style.RelativeSizeSpan
33 android.text.style.ScaleXSpan
33 android.text.style.StyleSpan
33 android.text.style.TypefaceSpan
33 android.widget.RemoteViews.ActionException
31 android.widget.RemoteViews
30 android.provider.Settings
28 android.text.style.QuoteSpan
27 android.app.AlarmManager
26 android.text.style.ImageSpan
25 android.hardware.SensorListener
25 android.text.method.MetaKeyKeyListener
25 android.text.style.BulletSpan
25 android.widget.ResourceCursorAdapter
23 android.provider.Contacts.Intents
21 android.widget.PopupWindow
20 android.R.id
20 android.provider.Settings.System
20 android.app.ActivityManager
20 android.text.method.BaseKeyListener
20 android.util.TimeUtils
20 android.widget.AutoCompleteTextView
19 android.provider.Contacts.Intents.Insert
17 android.view.GestureDetector.SimpleOnGestureListener
16 android.provider.MediaStore.Video
16 android.text.SpanWatcher
16 android.text.TextWatcher
16 android.text.style.ClickableSpan
16 android.text.style.MaskFilterSpan
16 android.text.style.RasterizerSpan
16 android.text.style.TextAppearanceSpan
15 android.webkit.UrlInterceptRegistry
14 android.media.MediaRecorder.OutputFormat
14 android.net.NetworkInfo
14 android.test.suitebuilder.TestMethod
14 android.text.method.QwertyKeyListener
14 android.widget.AbsSeekBar
12 android.view.WindowManager.LayoutParams
12 android.test.ActivityInstrumentationTestCase
12 android.test.InstrumentationTestCase
12 android.widget.AbsoluteLayout
12 java.util.logging.LogManager
11 android.view.Gravity
11 android.widget.CursorAdapter
11 android.widget.TextView
11 android.text.method.DateKeyListener
11 android.text.method.DateTimeKeyListener
11 android.text.method.DialerKeyListener
11 android.text.method.TimeKeyListener
11 android.webkit.WebHistoryItem
11 java.util.jar.Pack200.Unpacker
10 android.media.MediaPlayer
10 android.provider.MediaStore.Video.VideoColumns
10 android.test.ProviderTestCase
10 android.widget.Chronometer
9 android.graphics.drawable.TransitionDrawable
9 android.text.method.MultiTapKeyListener
8 android.media.AudioManager
8 android.view.ViewTreeObserver
8 android.content.pm.PackageInfo
7 android.text.Spanned
7 android.text.method.DigitsKeyListener
7 android.hardware.Camera
7 android.R.attr
7 android.telephony.TelephonyManager
7 android.media.SoundPool
7 android.os.Environment
6 android.view.KeyEvent
6 android.graphics.drawable.shapes.Shape
6 android.text.method.MovementMethod
6 android.view.OrientationListener
6 dalvik.system.DexFile
6 android.text.TextUtils
6 android.os.ParcelFileDescriptor
5 android.webkit.WebView
5 android.graphics.drawable.RotateDrawable
5 android.graphics.drawable.ScaleDrawable
5 android.provider.MediaStore.Audio.AlbumColumns
5 android.provider.MediaStore.Audio.Media
5 android.webkit.WebSettings
5 android.content.res.Resources
5 android.graphics.RectF
5 android.os.Looper
5 android.provider.Contacts.PeopleColumns
5 android.text.method.ArrowKeyMovementMethod
5 android.text.method.TextKeyListener
5 android.view.ViewDebug
5 android.widget.Scroller
5 android.widget.AbsListView
5 android.net.ConnectivityManager
5 android.view.KeyCharacterMap
4 android.content.res.Configuration
4 android.widget.ProgressBar
4 android.widget.SimpleCursorAdapter
4 android.R.string
4 java.lang.Class
4 java.util.jar.Pack200.Packer
4 android.provider.MediaStore.Images.Media
3 android.os.Build
3 android.os.IBinder
3 android.text.method.ScrollingMovementMethod
3 android.util.SparseIntArray
3 android.content.Intent
3 android.content.ContentResolver
3 android.net.wifi.WifiManager
3 android.content.BroadcastReceiver
3 android.os.Handler
3 android.view.Menu
3 android.view.animation.Animation
3 android.view.animation.Transformation
2 android.webkit.URLUtil
2 java.util.logging.Level
2 android.R.style
2 android.os.Binder
2 android.view.ViewParent
2 android.widget.GridView
2 android.test.mock.MockPackageManager
2 android.view.View
2 android.widget.ListView
2 android.app.PendingIntent
2 android.content.pm.PackageManager
2 android.telephony.PhoneNumberUtils
2 android.content.ContentProvider
2 android.Manifest.permission
2 android.widget.ArrayAdapter
2 android.content.pm.ActivityInfo
2 dalvik.system.VMDebug
1 android.database.sqlite.SQLiteDatabase
1 android.content.res.TypedArray
1 android.app.Activity
1 android.preference.DialogPreference
1 android.view.Window
1 android.graphics.Bitmap
1 android.os.Debug
1 android.provider.Browser
1 android.os.Parcel
1 android.database.DatabaseUtils
1 android.media.RingtoneManager
1 android.graphics.Rect
1 android.telephony.gsm.SmsMessage
1 android.database.Cursor
1 android.database.CursorWrapper
1 android.view.MotionEvent
1 android.location.Location
1 android.graphics.drawable.Drawable
<1 android.R.drawable
<1 android.app.Instrumentation
<1 android.graphics.Canvas
<1 android.content.Context
<1 android.view.ViewGroup
<1 java.lang.Character.UnicodeBlock
<1 android.text.style.UpdateLayout

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