Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ReactiveX/RxAndroid
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.1.0
Choose a base ref
...
head repository: ReactiveX/RxAndroid
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1.2.0
Choose a head ref

Commits on Dec 9, 2015

  1. Copy the full SHA
    468dcee View commit details
  2. Fix javadoc typo

    EddieRingle committed Dec 9, 2015
    Copy the full SHA
    35c7008 View commit details
  3. Merge pull request #254 from EddieRingle/patch-1

    Fix javadoc typo
    JakeWharton committed Dec 9, 2015
    Copy the full SHA
    c142622 View commit details
  4. Mention initializer fix.

    JakeWharton committed Dec 9, 2015
    Copy the full SHA
    36c1bf2 View commit details
  5. Copy the full SHA
    508eada View commit details

Commits on Dec 11, 2015

  1. Fix whitespace errors

    friederbluemle committed Dec 11, 2015
    2
    Copy the full SHA
    5f0077f View commit details
  2. Update sample-app

    friederbluemle committed Dec 11, 2015
    Copy the full SHA
    be74060 View commit details

Commits on Dec 12, 2015

  1. Merge pull request #255 from friederbluemle/update-sample-app

    Update sample app
    JakeWharton committed Dec 12, 2015
    2
    Copy the full SHA
    5f0b9eb View commit details

Commits on Dec 18, 2015

  1. Fixed custom thread snippet

    The custom thread example fails because there is no message queue attached.
    
    The exception is:
    ```java
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    ```
    homer-jay committed Dec 18, 2015
    Copy the full SHA
    79f6965 View commit details

Commits on Dec 22, 2015

  1. Copy the full SHA
    80c4d71 View commit details
  2. Merge pull request #260 from ReactiveX/jw/nuke-synthetic-methods

    Remove creation of synthetic accessor method.
    JakeWharton committed Dec 22, 2015
    Copy the full SHA
    3b686a3 View commit details

Commits on Feb 20, 2016

  1. Document release process.

    JakeWharton committed Feb 20, 2016
    2
    Copy the full SHA
    feb1998 View commit details
  2. Merge pull request #253 from ReactiveX/jw/release-document

    Document release process.
    JakeWharton committed Feb 20, 2016
    Copy the full SHA
    04bc1fd View commit details
  3. Merge pull request #258 from homer-jay/patch-1

    Fixed custom thread snippet
    JakeWharton committed Feb 20, 2016
    Copy the full SHA
    f811a98 View commit details
  4. Disable doclint on JDK 8

    JakeWharton committed Feb 20, 2016
    Copy the full SHA
    04b8a68 View commit details

Commits on Apr 16, 2016

  1. RxJava version updated

    PaulWoitaschek committed Apr 16, 2016
    Copy the full SHA
    3cf63df View commit details
  2. Merge pull request #274 from PaulWoitaschek/patch-2

    RxJava version updated
    JakeWharton committed Apr 16, 2016
    Copy the full SHA
    9507c84 View commit details

Commits on Apr 22, 2016

  1. Merge pull request #270 from ReactiveX/jw/disable-doclint

    Disable doclint on JDK 8
    JakeWharton committed Apr 22, 2016
    Copy the full SHA
    77e690d View commit details
  2. Copy the full SHA
    d395758 View commit details
  3. Merge pull request #276 from ReactiveX/jw/optimize

    Eliminate allocations by using the Handler to track scheduled actions.
    JakeWharton committed Apr 22, 2016
    Copy the full SHA
    168f59f View commit details
  4. Rewrite HandlerScheduler tests to be black box.

    Previously we mocked a Handler and relied on verifying the correct methods were called. This meant that changing the implementation of HandlerScheduler meant changing the tests. This is prone to masking errors since it focuses on *what* the implementation does instead of *how* it behaves. All we care about is behavior, and all these new tests do is verify behavior.
    
    It should be noted that these new tests (just like the old ones) are still reliant on the behavior of Robolectric's fake Looper.
    JakeWharton committed Apr 22, 2016
    Copy the full SHA
    9824509 View commit details

Commits on Apr 25, 2016

  1. Merge pull request #277 from ReactiveX/jw/simplify-tests

    Rewrite HandlerScheduler tests to be black box.
    JakeWharton committed Apr 25, 2016
    Copy the full SHA
    04141b0 View commit details

Commits on May 1, 2016

  1. Cache the hook reference upon worker creation.

    There's no need to look it up each time since it can't change.
    JakeWharton committed May 1, 2016
    Copy the full SHA
    fa21566 View commit details
  2. Merge pull request #280 from ReactiveX/jw/hook-cache

    Cache the hook reference upon worker creation.
    JakeWharton committed May 1, 2016
    Copy the full SHA
    57d7a4c View commit details

Commits on May 2, 2016

  1. Change scheduler factory to care about loopers, not handlers.

    A Looper is the currency of Android-specific work scheduling that we should be exposing. Handler is only a helper through which we access the Looper.
    JakeWharton committed May 2, 2016
    1
    Copy the full SHA
    0bb9b4e View commit details
  2. Copy the full SHA
    402d01b View commit details
  3. Updated Gradle to 2.13

    dlew committed May 2, 2016
    Copy the full SHA
    f1a6443 View commit details
  4. Merge pull request #283 from ReactiveX/jw/javadoc

    Correct rendered output of '@' in Javadoc.
    JakeWharton committed May 2, 2016
    Copy the full SHA
    fc29ac0 View commit details
  5. Merge pull request #282 from ReactiveX/jw/from-looper

    Change scheduler factory to care about loopers, not handlers.
    JakeWharton committed May 2, 2016
    Copy the full SHA
    f210386 View commit details
  6. Copy the full SHA
    c25678e View commit details
  7. Merge pull request #284 from dlew/dlew/gradle

    Updated gradle wrapper and build tools
    JakeWharton committed May 2, 2016
    Copy the full SHA
    aeb3ae5 View commit details
  8. Copy the full SHA
    14e6bc6 View commit details
  9. Copy the full SHA
    271df6a View commit details
  10. Merge pull request #285 from ReactiveX/jw/experimental

    Switch reset() to @experimental to match RxJava.
    JakeWharton committed May 2, 2016
    Copy the full SHA
    e859fcb View commit details
  11. Merge pull request #286 from ReactiveX/jw/no-reset

    Remove unnecessary reset. These tests don't use the global instance.
    JakeWharton committed May 2, 2016
    Copy the full SHA
    4c6b137 View commit details
  12. Fix AndroidSchedulers to create an instance using hook only once.

    Previously we were asking the hook for an instance every time `mainThread()` was called. This not only impacted performance, but also broke the contract the that hook was a factory–instead requiring that it behave like a thread-safe, lazily-initialized instance cache.
    
    If for whatever reason you do need to change the instance over time, return a scheduler instance which delegates to another and allows swapping out the delegate.
    JakeWharton committed May 2, 2016
    Copy the full SHA
    ce9c29a View commit details
  13. DIAMONDS

    JakeWharton committed May 2, 2016
    Copy the full SHA
    e4eeaca View commit details
  14. Copy the full SHA
    3bc8aee View commit details
  15. Merge pull request #287 from ReactiveX/jw/cached-instance

    Fix AndroidSchedulers to create an instance using hook only once.
    JakeWharton committed May 2, 2016
    Copy the full SHA
    a45bcb6 View commit details

Commits on May 3, 2016

  1. Prepare version 1.2.0.

    JakeWharton committed May 3, 2016
    Copy the full SHA
    6a0acbb View commit details
Showing with 609 additions and 402 deletions.
  1. +0 −1 .gitignore
  2. +3 −1 .travis.yml
  3. +19 −0 CHANGES.md
  4. +2 −2 CONTRIBUTING.md
  5. +23 −38 README.md
  6. +19 −0 RELEASING.md
  7. +2 −7 build.gradle
  8. +1 −1 gradle.properties
  9. +6 −2 gradle/artifacts.gradle
  10. BIN gradle/wrapper/gradle-wrapper.jar
  11. +2 −2 gradle/wrapper/gradle-wrapper.properties
  12. +25 −21 gradlew
  13. +4 −4 gradlew.bat
  14. +1 −1 rxandroid/build.gradle
  15. +3 −3 rxandroid/src/main/java/rx/android/MainThreadSubscription.java
  16. +3 −4 rxandroid/src/main/java/rx/android/plugins/RxAndroidPlugins.java
  17. +19 −12 rxandroid/src/main/java/rx/android/schedulers/AndroidSchedulers.java
  18. +17 −71 rxandroid/src/main/java/rx/android/schedulers/HandlerScheduler.java
  19. +131 −0 rxandroid/src/main/java/rx/android/schedulers/LooperScheduler.java
  20. +0 −8 rxandroid/src/test/java/rx/android/plugins/RxAndroidPluginsTest.java
  21. +1 −193 rxandroid/src/test/java/rx/android/schedulers/HandlerSchedulerTest.java
  22. +302 −0 rxandroid/src/test/java/rx/android/schedulers/LooperSchedulerTest.java
  23. +0 −10 sample-app/lint.xml
  24. +12 −6 sample-app/src/main/AndroidManifest.xml
  25. +5 −6 sample-app/src/main/java/rx/android/samples/MainActivity.java
  26. BIN sample-app/src/main/res/drawable-hdpi/ic_launcher.png
  27. BIN sample-app/src/main/res/drawable-mdpi/ic_launcher.png
  28. BIN sample-app/src/main/res/drawable-xhdpi/ic_launcher.png
  29. BIN sample-app/src/main/res/drawable-xxhdpi/ic_launcher.png
  30. +8 −9 sample-app/src/main/res/layout/main_activity.xml
  31. BIN sample-app/src/main/res/mipmap-hdpi/ic_launcher.png
  32. BIN sample-app/src/main/res/mipmap-mdpi/ic_launcher.png
  33. BIN sample-app/src/main/res/mipmap-xhdpi/ic_launcher.png
  34. BIN sample-app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  35. BIN sample-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  36. +1 −0 sample-app/src/main/res/values/strings.xml
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -68,4 +68,3 @@ local.properties

# jEnv
.java-version

4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -5,8 +5,10 @@ jdk:

android:
components:
- tools
- platform-tools
- android-23
- build-tools-23.0.1
- build-tools-23.0.3

# as per http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/
sudo: false
19 changes: 19 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,29 @@
# RxAndroid Releases #

### Version 1.2.0 - May 4th 2016 ###

* Rewrite the Android-specific schedulers (main thread or custom) to greatly reduce allocation and
performance overhead of scheduling work.
* `HandlerScheduler.create` has been deprecated in favor of `AndroidSchedulers.from(Looper)` as
a `Looper` is the actual mechanism of scheduling on Android, not `Handler.
* Fix: Correct the behavior of `AndroidSchedulers.mainThread()` to only invoke the registered
`RxAndroidSchedulersHook` for creating the main thread scheduler and to cache the result instead
of invoking it every time. This behvior change eliminates a performance overhead and brings
behavior in line with RxJava. If you were relying on the ability to change the main thread
scheduler over time (such as for tests), return a delegating scheduler from the hook which allows
changing the delegate instance at will.
* RxJava dependency now points at v1.1.4.
* `RxAndroidPlugins.reset()` is now marked as `@Experimental` to match the RxJava method of the
same name and behavior.


### Version 1.1.0 - December 9th 2015 ###

* New: `MainThreadSubscription` utility class runs its `onUnsubscribe` action on the Android main
thread. This aids in adding tear-down actions which must be executed on the main thread without
having to deal with posting to the main thread yourself.
* Fix: Lazily initialize `mainThread()` scheduler so that no Android code is run when overridden.
This allows unit tests overriding the implementation to work correctly.
* RxJava dependency now points at v1.1.0.


4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -17,9 +17,9 @@ If you are adding a new file it should have a header like this:
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
61 changes: 23 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ Android specific bindings for [RxJava](http://github.com/ReactiveX/RxJava).

This module adds the minimum classes to RxJava that make writing reactive components in Android
applications easy and hassle-free. More specifically, it provides a `Scheduler` that schedules on
the main UI thread or any given `Handler`.
the main thread or any given `Looper`.


## Communication
@@ -20,10 +20,10 @@ Since RxAndroid is part of the RxJava family the communication channels are simi
# Binaries

```groovy
compile 'io.reactivex:rxandroid:1.1.0'
compile 'io.reactivex:rxandroid:1.2.0'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxjava:1.1.4'
```

* RxAndroid: <a href='http://search.maven.org/#search%7Cga%7C1%7Crxandroid'><img src='http://img.shields.io/maven-central/v/io.reactivex/rxandroid.svg'></a>
@@ -52,56 +52,41 @@ Futher details on building can be found on the RxJava [Getting Started][start] p
A sample project which provides runnable code examples that demonstrate uses of the classes in this
project is available in the `sample-app/` folder.

## Observing on the UI thread
## Observing on the main thread

One of the most common operations when dealing with asynchronous tasks on Android is to observe the task's
result or outcome on the main UI thread. Using vanilla Android, this would
typically be accomplished with an `AsyncTask`. With RxJava instead you would declare your `Observable`
to be observed on the main thread:
result or outcome on the main thread. Using vanilla Android, this would typically be accomplished with an
`AsyncTask`. With RxJava instead you would declare your `Observable` to be observed on the main thread:

```java
public class ReactiveFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(/* an Observer */);
}
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(/* an Observer */);
```

This will execute the Observable on a new thread, and emit results through `onNext` on the main UI thread.
This will execute the `Observable` on a new thread, and emit results through `onNext` on the main thread.

## Observing on arbitrary threads
The previous sample is merely a specialization of a more general concept, namely binding asynchronous
communication to an Android message loop using the `Handler` class. In order to observe an `Observable`
on an arbitrary thread, create a `Handler` bound to that thread and use the `HandlerScheduler.from`
scheduler:
## Observing on arbitrary loopers

The previous sample is merely a specialization of a more general concept: binding asynchronous
communication to an Android message loop, or `Looper`. In order to observe an `Observable` on an arbitrary
`Looper`, create an associated `Scheduler` by calling `AndroidSchedulers.from`:

```java
new Thread(new Runnable() {
@Override
public void run() {
final Handler handler = new Handler(); // bound to this thread
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(HandlerScheduler.from(handler))
.subscribe(/* an Observer */)

// perform work, ...
}
}, "custom-thread-1").start();
Looper backgroundLooper = // ...
Observable.just("one", "two", "three", "four", "five")
.observeOn(AndroidSchedulers.from(backgroundLooper))
.subscribe(/* an Observer */)
```

This will execute the Observable on a new thread and emit results through `onNext` on "custom-thread-1".
(This example is contrived since you could as well call `observeOn(Schedulers.currentThread())` but it
shall suffice to illustrate the idea.)
This will execute the Observable on a new thread and emit results through `onNext` on whatever thread is
running `backgroundLooper`.


## Bugs and Feedback

For bugs, feature requests, and discussion please use [Github Issues][issues].
For bugs, feature requests, and discussion please use [GitHub Issues][issues].
For general usage questions please use the [mailing list][list] or [StackOverflow][so].


19 changes: 19 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Release Process
===============

1. Ensure `VERSION_NAME` in `gradle.properties` is set to the version you want to release.
2. Add an entry in `CHANGELOG.md` with the changes for the release.
3. Update `README.md` with the version about to be released. Also update the RxJava version in
this file to its latest.
4. Update the RxJava version in `rxandroid/build.gradle` to its latest. (We tell people that we
won't be tracking RxJava releases, and we don't, but we do it anyway when we are releasing for
those who ignore the advice.)
5. Commit: `git commit -am "Prepare version X.Y.X"`
6. Tag: `git tag -a X.Y.Z -m "Version X.Y.Z"`
7. Update `VERSION_NAME` in `gradle.properties` to the next development version. For example, if
you just tagged version 1.0.4 you would set this value to 1.0.5. Do NOT append "-SNAPSHOT" to
this value, it will be added automatically.
8. Commit: `git commit -am "Prepare next development version."`
9. Push: `git push && git push --tags`
10. Paste the `CHANGELOG.md` contents for this version into a Release on GitHub along with the
Groovy for depending on the new version (https://github.com/ReactiveX/RxAndroid/releases).
9 changes: 2 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -3,20 +3,15 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
classpath 'com.android.tools.build:gradle:2.1.0'
}
}

ext {
minSdkVersion = 9
compileSdkVersion = 23
buildToolsVersion = '23.0.1'
buildToolsVersion = '23.0.3'
sourceCompatibility = JavaVersion.VERSION_1_7
}

task wrapper(type: Wrapper) {
gradleVersion = '2.8'
distributionUrl = 'https://services.gradle.org/distributions/gradle-2.8-all.zip'
}

apply plugin: 'android-reporting'
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
GROUP=io.reactivex
VERSION_NAME=1.1.0
VERSION_NAME=1.2.0
POM_NAME=RxAndroid
POM_PACKAGING=aar
POM_DESCRIPTION=RxAndroid
8 changes: 6 additions & 2 deletions gradle/artifacts.gradle
Original file line number Diff line number Diff line change
@@ -24,6 +24,10 @@ if (project.plugins.hasPlugin('com.android.library')) {

// Output to a unique javadoc folder per variant
destinationDir = new File(project.docsDir, "javadoc-$variant.name")

if (JavaVersion.current().isJava8Compatible()) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}

// For official releasese, don't prefix the name so the artifact is published correctly
@@ -47,7 +51,7 @@ if (project.plugins.hasPlugin('com.android.library')) {
}

if (variant.name == 'release') {
// There's a lot of "magic" around the archives configuration; easier
// There's a lot of "magic" around the archives configuration; easier
// just to embrace it rather than try to configure around it
artifacts {
archives javadocJarTask, sourcesJarTask
@@ -61,4 +65,4 @@ if (project.plugins.hasPlugin('com.android.library')) {
artifacts.add configurationName, sourcesJarTask
}
}
}
}
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Sat Oct 31 12:01:47 CET 2015
#Mon May 02 08:26:04 CDT 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-all.zip
46 changes: 25 additions & 21 deletions gradlew
Original file line number Diff line number Diff line change
@@ -6,12 +6,30 @@
##
##############################################################################

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

@@ -30,6 +48,7 @@ die ( ) {
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
@@ -40,26 +59,11 @@ case "`uname`" in
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
@@ -85,7 +89,7 @@ location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
8 changes: 4 additions & 4 deletions gradlew.bat
Original file line number Diff line number Diff line change
@@ -8,14 +8,14 @@
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

@@ -46,7 +46,7 @@ echo location of your Java installation.
goto fail

:init
@rem Get command-line arguments, handling Windowz variants
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
2 changes: 1 addition & 1 deletion rxandroid/build.gradle
Original file line number Diff line number Diff line change
@@ -47,7 +47,7 @@ repositories {
}

dependencies {
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxjava:1.1.4'

testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
Original file line number Diff line number Diff line change
@@ -30,19 +30,19 @@
* A {@link #verifyMainThread() convenience method} is also provided for validating whether code
* is being called on the main thread. Calls to this method along with instances of this class are
* commonly used when creating custom observables using the following pattern:
* <pre>{@code
* <pre><code>
* &#064;Override public void call(Subscriber<? extends T> subscriber) {
* MainThreadSubscription.verifyMainThread();
*
* // TODO set up behavior
*
* subscriber.add(new MainThreadSubscriber() {
* subscriber.add(new MainThreadSubscription() {
* &#064;Override public void onUnsubscribe() {
* // TODO undo behavior
* }
* });
* }
* }</pre>
* </code></pre>
*/
public abstract class MainThreadSubscription implements Subscription {
/**
Loading