WHAT IS STATE? WIKIPEDIA A computer program stores data in variables, which represent storage locations in the computer's memory. The contents of these memory locations, at any given point in the program's execution, is called the program's state.
public class BookStore { private final List books;
public BookStore(final List books) { this.books = books; }
public BookStore addBooks(List additionalBooks) { List newBooks = getBooks();
newBooks.addAll(additionalBooks);
return new BookStore(newBooks); }
public List getBooks() { List copy = new ArrayList<>(); for (String book : books) { copy.add(book); } return copy; <- Return deep copy, not the original } }
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore );
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore ); BOOK STORE 1 Background Thread
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore ); BOOK STORE 1 Background Thread No incompletely modified data
BOOK STORE UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore ); BOOK STORE 1 Background Thread BOOK STORE 2
UI Thread Observable.just(bookStore) .map(addSomeBooks()) .map(sortAllBooks()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( // Update list with new BookStore ); BOOK STORE 2