---
title: Android-SDK - 2.0.0-beta2
slug: feature-experimentation/release-notes/android-sdk-2-0-0-beta2
docTags: 
createdAt: 2026-07-20T15:45:28.996Z
---

\## 2.0.0-beta2

May 17th, 2018

This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below.

\### New Features
\* Introduces the \`isFeatureEnabled\` API to determine whether to show a feature to a user or not.
\`\`\`
Boolean enabled = optimizelyClient.isFeatureEnabled("my\_feature\_key", "user\_1", userAttributes);
\`\`\`

\* You can also get all the enabled features for the user by calling the following method which returns a list of strings representing the feature keys:
\`\`\`
ArrayList enabledFeatures = optimizelyClient.getEnabledFeatures("user\_1", userAttributes);
\`\`\`

\* Introduces Feature Variables to configure or parameterize your feature. There are four variable types: \`Integer\`, \`String\`, \`Double\`, \`Boolean\`.
\`\`\`
String stringVariable = optimizelyClient.getFeatureVariableString("my\_feature\_key", "string\_variable\_key", "user\_1");
Integer integerVariable = optimizelyClient.getFeatureVariableInteger("my\_feature\_key", "integer\_variable\_key", "user\_1");
Double doubleVariable = optimizelyClient.getFeatureVariableDouble("my\_feature\_key", "double\_variable\_key", "user\_1");
Boolean booleanVariable = optimizelyClient.getFeatureVariableBoolean("my\_feature\_key", "boolean\_variable\_key", "user\_1");
\`\`\`

\### Breaking changes
\* The \`track\` API with revenue value as a stand-alone parameter has been removed. The revenue value should be passed in as an entry of the event tags map. The key for the revenue tag is \`revenue\` and will be treated by Optimizely as the key for analyzing revenue data in results.
\`\`\`
Map eventTags = new HashMap();

// reserved "revenue" tag
eventTags.put("revenue", 6432);

optimizelyClient.track("event\_key", "user\_id", userAttributes, eventTags);
\`\`\`

\* Live variable accessor methods have been removed and have been replaced with the feature variable methods mentioned above. Feature variables are scoped to a feature so you must supply the feature key in addition to the variable key to access them.

\- \`getVariableBoolean\` now becomes \`getFeatureVariableBoolean\`
\- \`getVariableString\` now becomes \`getFeatureVariableString\`
\- \`getVariableInteger\` now becomes \`getFeatureVariableInteger\`
\- \`getVariableFloat\` now becomes \`getFeatureVariableDouble\`

\* We have removed deprecated classes with the \`NotificationBroadcaster\` in favor of the new API with the \`NotificationCenter\`. We have streamlined the API so that it is easily usable with Java Lambdas in \*Java 1.8+\*. We have also added some convenience methods to add these listeners. Finally, some of the API names have changed slightly (e.g. \`clearAllNotifications()\` is now \`clearAllNotificationListeners()\`)

\### Bug Fixes
\* Fix for the following issue:
[https://issuetracker.google.com/issues/63622293](https://issuetracker.google.com/issues/63622293)
Our github issue is \[here]\([https://github.com/optimizely/android-sdk/issues/194](https://github.com/optimizely/android-sdk/issues/194)).
The JobWorkService was probably destroyed but we didn't cancel the
processor. It causes an exception in dequeueWork in our JobWorkService.
We wrapped the dequeueWork with a try/catch and are also now cancelling the background task in onDestroy.

\* Fix for possible error when loading logger via dagger (fall back logger provided).

\* Load UserProfileService on synchronous start. Also, cleanup UserProfileService cache in the background thread by removing experiments that are no longer in the datafile.

[https://github.com/optimizely/android-sdk/releases/tag/2.0.0-beta2](https://github.com/optimizely/android-sdk/releases/tag/2.0.0-beta2)
