System directories
| Method | Result |
|---|---|
| Environment.getDataDirectory() | /data |
| Environment.getDownloadCacheDirectory() | /cache |
| Environment.getRootDirectory() | /system |
External storage directories
System directories
| Method | Result |
|---|---|
| Environment.getDataDirectory() | /data |
| Environment.getDownloadCacheDirectory() | /cache |
| Environment.getRootDirectory() | /system |
External storage directories
| <?xml version="1.0" encoding="utf-8"?> | |
| <RelativeLayout | |
| xmlns:android="http://schemas.android.com/apk/res/android" | |
| xmlns:tools="http://schemas.android.com/tools" | |
| android:id="@+id/activity_main" | |
| android:layout_width="match_parent" | |
| android:layout_height="match_parent" | |
| android:paddingBottom="@dimen/activity_vertical_margin" | |
| android:paddingLeft="@dimen/activity_horizontal_margin" | |
| android:paddingRight="@dimen/activity_horizontal_margin" |
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
| xmlns:tools="http://schemas.android.com/tools" | |
| android:layout_width="match_parent" | |
| android:layout_height="match_parent" | |
| android:paddingBottom="@dimen/activity_vertical_margin" | |
| android:paddingLeft="@dimen/activity_horizontal_margin" | |
| android:paddingRight="@dimen/activity_horizontal_margin" | |
| android:paddingTop="@dimen/activity_vertical_margin" | |
| tools:context="kr.mindwing.helloworld.MainActivity"> |
| public class AsyncOperatorRepository<P, R> extends BaseObservable | |
| implements Repository<Result<R>>, Callback<R>, Updatable { | |
| private final AsyncOperator<P, R> asyncOperator; | |
| private final Repository<P> paramRepository; | |
| private Result<R> result; | |
| private Cancellable cancellable; | |
| public AsyncOperatorRepository(AsyncOperator<P, R> asyncOperator, |
| public class AsyncOperatorRepository<P, R> extends BaseObservable | |
| implements Repository<Result<R>>, Callback<R> { | |
| private final AsyncOperator<P, R> asyncOperator; | |
| private final Supplier<P> paramSupplier; | |
| private Result<R> result; | |
| private Cancellable cancellable; | |
| public AsyncOperatorRepository(AsyncOperator<P, R> asyncOperator, |
| interface AsyncOperator<P, R> { | |
| Cancellable request(P param, Callback<R> callback); | |
| } | |
| interface Callback<R> { | |
| void onResponse(R response); // Can be called from any thread | |
| } | |
| interface Cancellable { | |
| void cancel(); |
| Result<ResponseBlob> noResponse = Result.absent(); | |
| Function<Throwable, Result<ResponseBlob>> withNoResponse = | |
| Functions.staticFunction(noResponse); | |
| Repository<Result<ResponseBlob>> responseRepository = | |
| Repositories.repositoryWithInitialValue(noResponse) | |
| .observe(requestVariable) | |
| .onUpdatesPerLoop() | |
| // .getFrom(requestVariable) if it does not supply Result, OR: | |
| .attemptGetFrom(requestVariable).orEnd(withNoResponse) | |
| .goTo(networkingExecutor) |
| public class NetworkCallingFunction | |
| implements Function<RequestBlob, Result<ResponseBlob>> { | |
| @Override | |
| public Result<ResponseBlob> apply(RequestBlob request) { | |
| try { | |
| ResponseBlob blob = networkStack.execute(request); | |
| return Result.success(blob); | |
| } catch (Throwable e) { | |
| return Result.failure(e); | |
| } |
| // MutableRepository<RequestBlob> requestVariable = | |
| // mutableRepository(firstRequest); | |
| // OR: | |
| MutableRepository<Result<RequestBlob>> requestVariable = | |
| mutableRepository(Result.<RequestBlob>absent()); |
| public class NetworkCallingSupplier implements Supplier<Result<ResponseBlob>> { | |
| private final RequestBlob request = …; | |
| @Override | |
| public Result<ResponseBlob> get() { | |
| try { | |
| ResponseBlob blob = networkStack.execute(request); // blocking call | |
| return Result.success(blob); | |
| } catch (Throwable e) { | |
| return Result.failure(e); |