mirror of https://github.com/M66B/FairEmail.git
Download images parallel on faster connections
This commit is contained in:
parent
c263149c5d
commit
786ef4b660
|
@ -37,6 +37,9 @@ import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.graphics.drawable.LevelListDrawable;
|
import android.graphics.drawable.LevelListDrawable;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.Network;
|
||||||
|
import android.net.NetworkCapabilities;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
@ -69,13 +72,16 @@ import java.util.concurrent.Semaphore;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
class ImageHelper {
|
class ImageHelper {
|
||||||
private static final ExecutorService executor =
|
private static final ExecutorService executor_1 =
|
||||||
Helper.getBackgroundExecutor(1, "image");
|
Helper.getBackgroundExecutor(1, "image_1");
|
||||||
|
private static final ExecutorService executor_n =
|
||||||
|
Helper.getBackgroundExecutor(0, "image_n");
|
||||||
|
|
||||||
private static final int DOWNLOAD_TIMEOUT = 15 * 1000; // milliseconds
|
private static final int DOWNLOAD_TIMEOUT = 15 * 1000; // milliseconds
|
||||||
private static final int MAX_REDIRECTS = 10;
|
private static final int MAX_REDIRECTS = 10;
|
||||||
private static final long FIT_DRAWABLE_WARNING = 10 * 1000L; // milliseconds
|
private static final long FIT_DRAWABLE_WARNING = 10 * 1000L; // milliseconds
|
||||||
private static final long FIT_DRAWABLE_TIMEOUT = 20 * 1000L; // milliseconds
|
private static final long FIT_DRAWABLE_TIMEOUT = 20 * 1000L; // milliseconds
|
||||||
|
private static final int SLOW_CONNECTION = 2 * 1024; // Kbps
|
||||||
|
|
||||||
static Bitmap generateIdenticon(@NonNull String email, int size, int pixels, Context context) {
|
static Bitmap generateIdenticon(@NonNull String email, int size, int pixels, Context context) {
|
||||||
byte[] hash = getHash(email);
|
byte[] hash = getHash(email);
|
||||||
|
@ -336,6 +342,27 @@ class ImageHelper {
|
||||||
lld.setBounds(0, 0, px, px);
|
lld.setBounds(0, 0, px, px);
|
||||||
lld.setLevel(1);
|
lld.setLevel(1);
|
||||||
|
|
||||||
|
boolean slow = true;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
// 2G GSM ~14.4 Kbps
|
||||||
|
// G GPRS ~26.8 Kbps
|
||||||
|
// E EDGE ~108.8 Kbps
|
||||||
|
// 3G UMTS ~128 Kbps
|
||||||
|
// H HSPA ~3.6 Mbps
|
||||||
|
// H+ HSPA+ ~14.4 Mbps-23.0 Mbps
|
||||||
|
// 4G LTE ~50 Mbps
|
||||||
|
// 4G LTE-A ~500 Mbps
|
||||||
|
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
Network active = (cm == null ? null : cm.getActiveNetwork());
|
||||||
|
NetworkCapabilities caps = (active == null ? null : cm.getNetworkCapabilities(active));
|
||||||
|
if (caps != null) {
|
||||||
|
int kbps = caps.getLinkDownstreamBandwidthKbps();
|
||||||
|
slow = (kbps < SLOW_CONNECTION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecutorService executor = (slow ? executor_1 : executor_n);
|
||||||
|
|
||||||
executor.submit(new Runnable() {
|
executor.submit(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
Loading…
Reference in New Issue