package de.robv.android.xposed.installer.util; import android.content.Context; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.support.annotation.CallSuper; import de.robv.android.xposed.installer.XposedApp; public abstract class OnlineLoader<T> extends Loader<T> { protected SharedPreferences mPref = XposedApp.getPreferences(); protected String mPrefKeyLastUpdateCheck = CLASS_NAME + "_last_update_check"; protected int mUpdateFrequency = 24 * 60 * 60 * 1000; private static final ConnectivityManager sConMgr = (ConnectivityManager) XposedApp.getInstance().getSystemService(Context.CONNECTIVITY_SERVICE); protected boolean shouldUpdate() { long now = System.currentTimeMillis(); long lastUpdateCheck = mPref.getLong(mPrefKeyLastUpdateCheck, 0); if (now < lastUpdateCheck + mUpdateFrequency) { return false; } NetworkInfo netInfo = sConMgr.getActiveNetworkInfo(); if (netInfo == null || !netInfo.isConnected()) { return false; } mPref.edit().putLong(mPrefKeyLastUpdateCheck, now).apply(); return true; } @CallSuper @Override protected void onClear() { resetLastUpdateCheck(); } public void resetLastUpdateCheck() { mPref.edit().remove(mPrefKeyLastUpdateCheck).apply(); } }