Skip to content

Instantly share code, notes, and snippets.

Avatar
👑
Solving Problems

Jemshit Iskenderov jemshit

👑
Solving Problems
View GitHub Profile
@jemshit
jemshit / MediaPlayerStateMachine.kt
Last active Nov 18, 2020
Android MediaPlayer has internal state of its own, but there is no get method for it. State diagram is here: https://developer.android.com/images/mediaplayer_state_diagram.gif. Invocation of method that is not allowed at current state results in exception. To avoid such exception and track states of MediaPlayer, MediaPlayerStateMachine is writte…
View MediaPlayerStateMachine.kt
import android.util.Log
fun emptyMPStateMachineLogger(tag: String, message: String) {
// NoOp
}
fun defaultMPStateMachineLogger(tag: String, message: String) {
Log.d(tag, message)
}
@jemshit
jemshit / AndroidResourceProvider.kt
Last active May 5, 2021
Android Resource Provider for Presenter in MVP
View AndroidResourceProvider.kt
import android.content.Context
import android.support.annotation.*
import android.support.v4.content.ContextCompat
import interface_adapters.ResourceProvider
import javax.inject.Inject
import javax.inject.Named
import javax.inject.Singleton
@Singleton
class AndroidResourceProvider
View ColdReactiveDataExpiration.java
import com.jakewharton.rxrelay2.BehaviorRelay;
import com.jakewharton.rxrelay2.Relay;
import io.reactivex.Observable;
import java.util.concurrent.TimeUnit;
public class ColdReactiveDataExpiration {
// Problems to solve:
// 1- UI components should be notified when data is updated
View HotReactiveDataExpiration.java
import com.jakewharton.rx.ReplayingShare;
import com.jakewharton.rxrelay2.PublishRelay;
import com.jakewharton.rxrelay2.Relay;
import io.reactivex.Observable;
import java.util.concurrent.TimeUnit;
public class HotReactiveDataExpiration {
// Problems to solve:
View HotReactiveData.java
import com.jakewharton.rx.ReplayingShare;
import com.jakewharton.rxrelay2.PublishRelay;
import com.jakewharton.rxrelay2.Relay;
import io.reactivex.Observable;
import java.util.concurrent.TimeUnit;
public class HotReactiveData {
// Problems to solve:
@jemshit
jemshit / BaseFragment.java
Created Dec 1, 2016
Do something when Fragment is visible
View BaseFragment.java
public class BaseFragment extends Fragment {
private boolean fragmentResume=false;
private boolean fragmentVisible=false;
private boolean fragmentOnCreated=false;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@jemshit
jemshit / proguard-rules.pro
Last active Jun 8, 2021
Proguard rules for common Android libraries
View proguard-rules.pro
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
### RxJava, RxAndroid (https://gist.github.com/kosiara/487868792fbd3214f9c9)
-keep class rx.schedulers.Schedulers {
public static <methods>;
@jemshit
jemshit / .bash_profile
Last active May 6, 2020
Custom .bash_profile for MacOs
View .bash_profile
#### cd to the path of the front Finder window
cdf() {
target=`osascript -e 'tell application "Finder" to if (count of Finder windows) > 0 then get POSIX path of (target of front Finder window as text)'`
if [ "$target" != "" ]; then
cd "$target"; pwd
else
echo 'No Finder window found' >&2
fi
}
@jemshit
jemshit / RetryWithDelay.java
Last active Jan 13, 2021
RxJava Retry Web Service Connection incrementally if there is Network Kind of Error.
View RetryWithDelay.java
public class RetryWithDelay implements Func1<Observable<? extends Throwable>, Observable<?>> {
private int numberOfTry;
private int delay;
private int retryCount = 1;
private final TimeUnit timeUnit;
public RetryWithDelay(int numberOfTry, int delay, TimeUnit timeUnit) {
this.numberOfTry = numberOfTry;
this.delay = delay;
@jemshit
jemshit / HttpStatusCodeHelper.java
Last active Nov 25, 2019
HTTP Status Codes, Helper Class in JAVA
View HttpStatusCodeHelper.java
public class HttpStatusCodeHelper {
/**
* Gets Http Status Code Information for given Code. No Reflection, No Enum
* @param code
* @return type + text
*/
public static String getHttpTypeAndTextByCode(final int code) {
//region 1xx