1
0
mirror of https://github.com/TwidereProject/Twidere-Android synced 2025-02-12 01:30:43 +01:00

using dagger to retrive image loader

This commit is contained in:
Mariotaku Lee 2015-10-05 22:19:47 +08:00
parent b5db451c75
commit 1ff43a360d
15 changed files with 113 additions and 71 deletions

View File

@ -66,7 +66,6 @@ import org.apache.commons.lang3.ArrayUtils;
import org.mariotaku.twidere.Constants; import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R; import org.mariotaku.twidere.R;
import org.mariotaku.twidere.adapter.support.SupportFixedFragmentStatePagerAdapter; import org.mariotaku.twidere.adapter.support.SupportFixedFragmentStatePagerAdapter;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.fragment.support.BaseSupportFragment; import org.mariotaku.twidere.fragment.support.BaseSupportFragment;
import org.mariotaku.twidere.fragment.support.ViewStatusDialogFragment; import org.mariotaku.twidere.fragment.support.ViewStatusDialogFragment;
import org.mariotaku.twidere.loader.support.TileImageLoader; import org.mariotaku.twidere.loader.support.TileImageLoader;
@ -81,7 +80,6 @@ import org.mariotaku.twidere.util.MenuUtils;
import org.mariotaku.twidere.util.SaveFileTask; import org.mariotaku.twidere.util.SaveFileTask;
import org.mariotaku.twidere.util.ThemeUtils; import org.mariotaku.twidere.util.ThemeUtils;
import org.mariotaku.twidere.util.Utils; import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.util.VideoLoader;
import org.mariotaku.twidere.util.VideoLoader.VideoLoadingListener; import org.mariotaku.twidere.util.VideoLoader.VideoLoadingListener;
import java.io.File; import java.io.File;
@ -584,8 +582,6 @@ public final class MediaViewerActivity extends BaseAppCompatActivity implements
} }
} }
private VideoLoader mVideoLoader;
private TextureVideoView mVideoView; private TextureVideoView mVideoView;
private View mVideoViewOverlay; private View mVideoViewOverlay;
private SeekBar mVideoViewProgress; private SeekBar mVideoViewProgress;
@ -734,7 +730,6 @@ public final class MediaViewerActivity extends BaseAppCompatActivity implements
public void onActivityCreated(@Nullable Bundle savedInstanceState) { public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true); setHasOptionsMenu(true);
mVideoLoader = TwidereApplication.getInstance(getActivity()).getVideoLoader();
Handler handler = mVideoViewProgress.getHandler(); Handler handler = mVideoViewProgress.getHandler();
if (handler == null) { if (handler == null) {

View File

@ -36,11 +36,6 @@ import android.support.multidex.MultiDexApplication;
import com.nostra13.universalimageloader.cache.disc.DiskCache; import com.nostra13.universalimageloader.cache.disc.DiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache; import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.ImageDownloader;
import com.nostra13.universalimageloader.utils.L;
import com.squareup.okhttp.internal.Network; import com.squareup.okhttp.internal.Network;
import com.squareup.otto.Bus; import com.squareup.otto.Bus;
@ -52,7 +47,6 @@ import org.mariotaku.twidere.activity.MainActivity;
import org.mariotaku.twidere.activity.MainHondaJOJOActivity; import org.mariotaku.twidere.activity.MainHondaJOJOActivity;
import org.mariotaku.twidere.service.RefreshService; import org.mariotaku.twidere.service.RefreshService;
import org.mariotaku.twidere.util.AbsLogger; import org.mariotaku.twidere.util.AbsLogger;
import org.mariotaku.twidere.util.AsyncTaskManager;
import org.mariotaku.twidere.util.DebugModeUtils; import org.mariotaku.twidere.util.DebugModeUtils;
import org.mariotaku.twidere.util.KeyboardShortcutsHandler; import org.mariotaku.twidere.util.KeyboardShortcutsHandler;
import org.mariotaku.twidere.util.MathUtils; import org.mariotaku.twidere.util.MathUtils;
@ -61,13 +55,11 @@ import org.mariotaku.twidere.util.StrictModeUtils;
import org.mariotaku.twidere.util.TwidereLogger; import org.mariotaku.twidere.util.TwidereLogger;
import org.mariotaku.twidere.util.UserColorNameManager; import org.mariotaku.twidere.util.UserColorNameManager;
import org.mariotaku.twidere.util.Utils; import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.util.VideoLoader;
import org.mariotaku.twidere.util.content.TwidereSQLiteOpenHelper; import org.mariotaku.twidere.util.content.TwidereSQLiteOpenHelper;
import org.mariotaku.twidere.util.dagger.ApplicationModule; import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.util.imageloader.ReadOnlyDiskLRUNameCache; import org.mariotaku.twidere.util.imageloader.ReadOnlyDiskLRUNameCache;
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
import org.mariotaku.twidere.util.imageloader.URLFileNameGenerator; import org.mariotaku.twidere.util.imageloader.URLFileNameGenerator;
import org.mariotaku.twidere.util.net.TwidereHostAddressResolver; import org.mariotaku.twidere.util.net.TwidereNetwork;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -89,16 +81,13 @@ public class TwidereApplication extends MultiDexApplication implements Constants
private static final String KEY_KEYBOARD_SHORTCUT_INITIALIZED = "keyboard_shortcut_initialized"; private static final String KEY_KEYBOARD_SHORTCUT_INITIALIZED = "keyboard_shortcut_initialized";
private Handler mHandler; private Handler mHandler;
private AsyncTaskManager mAsyncTaskManager;
private SharedPreferences mPreferences; private SharedPreferences mPreferences;
private MultiSelectManager mMultiSelectManager; private MultiSelectManager mMultiSelectManager;
private TwidereImageDownloader mImageDownloader, mFullImageDownloader;
private DiskCache mDiskCache, mFullDiskCache; private DiskCache mDiskCache, mFullDiskCache;
private SQLiteOpenHelper mSQLiteOpenHelper; private SQLiteOpenHelper mSQLiteOpenHelper;
private Network mNetwork; private Network mNetwork;
private SQLiteDatabase mDatabase; private SQLiteDatabase mDatabase;
private Bus mMessageBus; private Bus mMessageBus;
private VideoLoader mVideoLoader;
private KeyboardShortcutsHandler mKeyboardShortcutsHandler; private KeyboardShortcutsHandler mKeyboardShortcutsHandler;
private UserColorNameManager mUserColorNameManager; private UserColorNameManager mUserColorNameManager;
@ -110,11 +99,6 @@ public class TwidereApplication extends MultiDexApplication implements Constants
return (TwidereApplication) context.getApplicationContext(); return (TwidereApplication) context.getApplicationContext();
} }
public AsyncTaskManager getAsyncTaskManager() {
if (mAsyncTaskManager != null) return mAsyncTaskManager;
return mAsyncTaskManager = AsyncTaskManager.getInstance();
}
public DiskCache getDiskCache() { public DiskCache getDiskCache() {
if (mDiskCache != null) return mDiskCache; if (mDiskCache != null) return mDiskCache;
return mDiskCache = createDiskCache(DIR_NAME_IMAGE_CACHE); return mDiskCache = createDiskCache(DIR_NAME_IMAGE_CACHE);
@ -130,18 +114,13 @@ public class TwidereApplication extends MultiDexApplication implements Constants
return mUserColorNameManager = new UserColorNameManager(this); return mUserColorNameManager = new UserColorNameManager(this);
} }
public ImageDownloader getFullImageDownloader() {
if (mFullImageDownloader != null) return mFullImageDownloader;
return mFullImageDownloader = new TwidereImageDownloader(this, true, true);
}
public Handler getHandler() { public Handler getHandler() {
return mHandler; return mHandler;
} }
public Network getNetwork() { public Network getNetwork() {
if (mNetwork != null) return mNetwork; if (mNetwork != null) return mNetwork;
return mNetwork = new TwidereHostAddressResolver(this); return mNetwork = new TwidereNetwork(this);
} }
public KeyboardShortcutsHandler getKeyboardShortcutsHandler() { public KeyboardShortcutsHandler getKeyboardShortcutsHandler() {
@ -155,18 +134,6 @@ public class TwidereApplication extends MultiDexApplication implements Constants
return mKeyboardShortcutsHandler; return mKeyboardShortcutsHandler;
} }
public ImageDownloader getImageDownloader() {
if (mImageDownloader != null) return mImageDownloader;
return mImageDownloader = new TwidereImageDownloader(this, false, true);
}
public VideoLoader getVideoLoader() {
if (mVideoLoader != null) return mVideoLoader;
final VideoLoader loader = new VideoLoader(this);
return mVideoLoader = loader;
}
@Nullable @Nullable
public Bus getMessageBus() { public Bus getMessageBus() {
return mMessageBus; return mMessageBus;
@ -286,12 +253,7 @@ public class TwidereApplication extends MultiDexApplication implements Constants
} }
public void reloadConnectivitySettings() { public void reloadConnectivitySettings() {
if (mImageDownloader != null) { ApplicationModule.get(this).getImageDownloader().reloadConnectivitySettings();
mImageDownloader.reloadConnectivitySettings();
}
if (mFullImageDownloader != null) {
mFullImageDownloader.reloadConnectivitySettings();
}
} }
private DiskCache createDiskCache(final String dirName) { private DiskCache createDiskCache(final String dirName) {

View File

@ -46,6 +46,7 @@ import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.MultiSelectManager; import org.mariotaku.twidere.util.MultiSelectManager;
import org.mariotaku.twidere.util.ReadStateManager; import org.mariotaku.twidere.util.ReadStateManager;
import org.mariotaku.twidere.util.ThemedLayoutInflaterFactory; import org.mariotaku.twidere.util.ThemedLayoutInflaterFactory;
import org.mariotaku.twidere.util.VideoLoader;
import org.mariotaku.twidere.util.dagger.ApplicationModule; import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.util.dagger.DaggerGeneralComponent; import org.mariotaku.twidere.util.dagger.DaggerGeneralComponent;
@ -59,6 +60,8 @@ public class BaseSupportFragment extends Fragment implements IBaseFragment, Cons
protected ReadStateManager mReadStateManager; protected ReadStateManager mReadStateManager;
@Inject @Inject
protected MediaLoaderWrapper mMediaLoader; protected MediaLoaderWrapper mMediaLoader;
@Inject
protected VideoLoader mVideoLoader;
public BaseSupportFragment() { public BaseSupportFragment() {

View File

@ -56,7 +56,6 @@ import org.mariotaku.twidere.api.twitter.Twitter;
import org.mariotaku.twidere.api.twitter.TwitterException; import org.mariotaku.twidere.api.twitter.TwitterException;
import org.mariotaku.twidere.api.twitter.model.ProfileUpdate; import org.mariotaku.twidere.api.twitter.model.ProfileUpdate;
import org.mariotaku.twidere.api.twitter.model.User; import org.mariotaku.twidere.api.twitter.model.User;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.loader.support.ParcelableUserLoader; import org.mariotaku.twidere.loader.support.ParcelableUserLoader;
import org.mariotaku.twidere.model.ParcelableUser; import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.model.SingleResponse; import org.mariotaku.twidere.model.SingleResponse;
@ -71,6 +70,7 @@ import org.mariotaku.twidere.util.TwitterAPIFactory;
import org.mariotaku.twidere.util.TwitterValidatorMETLengthChecker; import org.mariotaku.twidere.util.TwitterValidatorMETLengthChecker;
import org.mariotaku.twidere.util.TwitterWrapper; import org.mariotaku.twidere.util.TwitterWrapper;
import org.mariotaku.twidere.util.Utils; import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.view.ForegroundColorView; import org.mariotaku.twidere.view.ForegroundColorView;
import org.mariotaku.twidere.view.iface.IExtendedView.OnSizeChangedListener; import org.mariotaku.twidere.view.iface.IExtendedView.OnSizeChangedListener;
@ -221,8 +221,7 @@ public class UserProfileEditorFragment extends BaseSupportFragment implements On
public void onActivityCreated(final Bundle savedInstanceState) { public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true); setHasOptionsMenu(true);
final TwidereApplication application = TwidereApplication.getInstance(getActivity()); mAsyncTaskManager = ApplicationModule.get(getContext()).getAsyncTaskManager();
mAsyncTaskManager = application.getAsyncTaskManager();
final Bundle args = getArguments(); final Bundle args = getArguments();
final long accountId = args.getLong(EXTRA_ACCOUNT_ID, -1); final long accountId = args.getLong(EXTRA_ACCOUNT_ID, -1);
mAccountId = accountId; mAccountId = accountId;

View File

@ -38,7 +38,9 @@ import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.util.BitmapUtils; import org.mariotaku.twidere.util.BitmapUtils;
import org.mariotaku.twidere.util.Exif; import org.mariotaku.twidere.util.Exif;
import org.mariotaku.twidere.util.ImageValidator; import org.mariotaku.twidere.util.ImageValidator;
import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.util.imageloader.AccountExtra; import org.mariotaku.twidere.util.imageloader.AccountExtra;
import org.mariotaku.twidere.util.imageloader.AccountFullImageExtra;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -62,7 +64,7 @@ public class TileImageLoader extends AsyncTaskLoader<TileImageLoader.Result> {
mUri = uri; mUri = uri;
mListener = listener; mListener = listener;
final TwidereApplication app = TwidereApplication.getInstance(context); final TwidereApplication app = TwidereApplication.getInstance(context);
mDownloader = app.getFullImageDownloader(); mDownloader = ApplicationModule.get(context).getImageDownloader();
mDiskCache = app.getFullDiskCache(); mDiskCache = app.getFullDiskCache();
final Resources res = context.getResources(); final Resources res = context.getResources();
final DisplayMetrics dm = res.getDisplayMetrics(); final DisplayMetrics dm = res.getDisplayMetrics();
@ -89,7 +91,7 @@ public class TileImageLoader extends AsyncTaskLoader<TileImageLoader.Result> {
} }
try { try {
// from SD cache // from SD cache
final InputStream is = mDownloader.getStream(url, new AccountExtra(mAccountId)); final InputStream is = mDownloader.getStream(url, new AccountFullImageExtra(mAccountId));
if (is == null) return Result.nullInstance(); if (is == null) return Result.nullInstance();
try { try {
final long length = is.available(); final long length = is.available();

View File

@ -154,6 +154,7 @@ public final class TwidereDataProvider extends ContentProvider implements Consta
ImageLoader mMediaLoader; ImageLoader mMediaLoader;
private SharedPreferencesWrapper mPreferences; private SharedPreferencesWrapper mPreferences;
private ImagePreloader mImagePreloader; private ImagePreloader mImagePreloader;
@Inject
private Network mNetwork; private Network mNetwork;
private Handler mHandler; private Handler mHandler;
@ -423,10 +424,8 @@ public final class TwidereDataProvider extends ContentProvider implements Consta
public boolean onCreate() { public boolean onCreate() {
final Context context = getContext(); final Context context = getContext();
DaggerGeneralComponent.builder().applicationModule(ApplicationModule.get(context)).build().inject(this); DaggerGeneralComponent.builder().applicationModule(ApplicationModule.get(context)).build().inject(this);
final TwidereApplication app = TwidereApplication.getInstance(context);
mHandler = new Handler(Looper.getMainLooper()); mHandler = new Handler(Looper.getMainLooper());
mDatabaseWrapper = new SQLiteDatabaseWrapper(this); mDatabaseWrapper = new SQLiteDatabaseWrapper(this);
mNetwork = app.getNetwork();
mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE); mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
mPreferences.registerOnSharedPreferenceChangeListener(this); mPreferences.registerOnSharedPreferenceChangeListener(this);
updatePreferences(); updatePreferences();

View File

@ -21,6 +21,7 @@ package org.mariotaku.twidere.util;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Handler; import android.os.Handler;
import android.os.Looper;
import org.mariotaku.twidere.task.ManagedAsyncTask; import org.mariotaku.twidere.task.ManagedAsyncTask;
@ -38,7 +39,7 @@ public final class AsyncTaskManager {
private static AsyncTaskManager sInstance; private static AsyncTaskManager sInstance;
AsyncTaskManager() { AsyncTaskManager() {
this(new Handler()); this(new Handler(Looper.getMainLooper()));
} }
AsyncTaskManager(final Handler handler) { AsyncTaskManager(final Handler handler) {

View File

@ -72,7 +72,8 @@ import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.model.ParcelableUserList; import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.model.SingleResponse; import org.mariotaku.twidere.model.SingleResponse;
import org.mariotaku.twidere.provider.TwidereDataStore; import org.mariotaku.twidere.provider.TwidereDataStore;
import org.mariotaku.twidere.provider.TwidereDataStore.*; import org.mariotaku.twidere.provider.TwidereDataStore.CachedHashtags;
import org.mariotaku.twidere.provider.TwidereDataStore.CachedRelationships;
import org.mariotaku.twidere.provider.TwidereDataStore.CachedTrends; import org.mariotaku.twidere.provider.TwidereDataStore.CachedTrends;
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages; import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages;
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.Inbox; import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages.Inbox;
@ -86,6 +87,7 @@ import org.mariotaku.twidere.task.CacheUsersStatusesTask;
import org.mariotaku.twidere.task.ManagedAsyncTask; import org.mariotaku.twidere.task.ManagedAsyncTask;
import org.mariotaku.twidere.util.collection.LongSparseMap; import org.mariotaku.twidere.util.collection.LongSparseMap;
import org.mariotaku.twidere.util.content.ContentResolverUtils; import org.mariotaku.twidere.util.content.ContentResolverUtils;
import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.util.message.FavoriteCreatedEvent; import org.mariotaku.twidere.util.message.FavoriteCreatedEvent;
import org.mariotaku.twidere.util.message.FavoriteDestroyedEvent; import org.mariotaku.twidere.util.message.FavoriteDestroyedEvent;
import org.mariotaku.twidere.util.message.FriendshipUpdatedEvent; import org.mariotaku.twidere.util.message.FriendshipUpdatedEvent;
@ -130,8 +132,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
public AsyncTwitterWrapper(final Context context) { public AsyncTwitterWrapper(final Context context) {
mContext = context; mContext = context;
final TwidereApplication app = TwidereApplication.getInstance(context); mAsyncTaskManager = ApplicationModule.get(context).getAsyncTaskManager();
mAsyncTaskManager = app.getAsyncTaskManager();
mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME, mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME,
Context.MODE_PRIVATE, SharedPreferenceConstants.class); Context.MODE_PRIVATE, SharedPreferenceConstants.class);
mResolver = context.getContentResolver(); mResolver = context.getContentResolver();

View File

@ -47,6 +47,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.model.ConsumerKeyType; import org.mariotaku.twidere.model.ConsumerKeyType;
import org.mariotaku.twidere.model.ParcelableCredentials; import org.mariotaku.twidere.model.ParcelableCredentials;
import org.mariotaku.twidere.model.RequestType; import org.mariotaku.twidere.model.RequestType;
import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.util.net.OkHttpRestClient; import org.mariotaku.twidere.util.net.OkHttpRestClient;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
@ -127,7 +128,7 @@ public class TwitterAPIFactory implements TwidereConstants {
if (enableProxy) { if (enableProxy) {
client.setProxy(getProxy(prefs)); client.setProxy(getProxy(prefs));
} }
Internal.instance.setNetwork(client, TwidereApplication.getInstance(context).getNetwork()); Internal.instance.setNetwork(client, ApplicationModule.get(context).getNetwork());
return new OkHttpRestClient(context, client); return new OkHttpRestClient(context, client);
} }

View File

@ -30,6 +30,7 @@ import com.squareup.otto.Bus;
import org.mariotaku.twidere.app.TwidereApplication; import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.model.SingleResponse; import org.mariotaku.twidere.model.SingleResponse;
import org.mariotaku.twidere.task.ManagedAsyncTask; import org.mariotaku.twidere.task.ManagedAsyncTask;
import org.mariotaku.twidere.util.dagger.ApplicationModule;
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader; import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
import org.mariotaku.twidere.util.message.VideoLoadFinishedEvent; import org.mariotaku.twidere.util.message.VideoLoadFinishedEvent;
@ -53,8 +54,8 @@ public class VideoLoader {
final TwidereApplication app = TwidereApplication.getInstance(context); final TwidereApplication app = TwidereApplication.getInstance(context);
mContext = context; mContext = context;
mDiskCache = app.getDiskCache(); mDiskCache = app.getDiskCache();
mImageDownloader = new TwidereImageDownloader(context, false, false); mImageDownloader = new TwidereImageDownloader(context, false);
mTaskManager = app.getAsyncTaskManager(); mTaskManager = ApplicationModule.get(context).getAsyncTaskManager();
mBus = app.getMessageBus(); mBus = app.getMessageBus();
} }

View File

@ -25,14 +25,18 @@ import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.utils.L; import com.nostra13.universalimageloader.utils.L;
import com.squareup.okhttp.internal.Network;
import org.mariotaku.twidere.BuildConfig; import org.mariotaku.twidere.BuildConfig;
import org.mariotaku.twidere.app.TwidereApplication; import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.util.ActivityTracker; import org.mariotaku.twidere.util.ActivityTracker;
import org.mariotaku.twidere.util.AsyncTaskManager;
import org.mariotaku.twidere.util.AsyncTwitterWrapper; import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.MediaLoaderWrapper; import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.ReadStateManager; import org.mariotaku.twidere.util.ReadStateManager;
import org.mariotaku.twidere.util.VideoLoader; import org.mariotaku.twidere.util.VideoLoader;
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
import org.mariotaku.twidere.util.net.TwidereNetwork;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@ -46,23 +50,34 @@ public class ApplicationModule {
private final ActivityTracker activityTracker; private final ActivityTracker activityTracker;
private final AsyncTwitterWrapper asyncTwitterWrapper; private final AsyncTwitterWrapper asyncTwitterWrapper;
private final ReadStateManager readStateManager; private final ReadStateManager readStateManager;
private final MediaLoaderWrapper mediaLoaderWrapper;
private final ImageLoader imageLoader;
private final VideoLoader videoLoader; private final VideoLoader videoLoader;
private final ImageLoader imageLoader;
private final MediaLoaderWrapper mediaLoaderWrapper;
private final TwidereImageDownloader imageDownloader;
private final AsyncTaskManager asyncTaskManager;
private final Network network;
public ApplicationModule(TwidereApplication application) { public ApplicationModule(TwidereApplication application) {
activityTracker = new ActivityTracker(); activityTracker = new ActivityTracker();
asyncTwitterWrapper = new AsyncTwitterWrapper(application); asyncTwitterWrapper = new AsyncTwitterWrapper(application);
readStateManager = new ReadStateManager(application); readStateManager = new ReadStateManager(application);
imageLoader = createImageLoader(application); imageDownloader = new TwidereImageDownloader(application, true);
imageLoader = createImageLoader(application, imageDownloader);
videoLoader = new VideoLoader(application); videoLoader = new VideoLoader(application);
mediaLoaderWrapper = new MediaLoaderWrapper(imageLoader, videoLoader); mediaLoaderWrapper = new MediaLoaderWrapper(imageLoader, videoLoader);
asyncTaskManager = AsyncTaskManager.getInstance();
network = new TwidereNetwork(application);
} }
public static ApplicationModule get(Context context) { public static ApplicationModule get(Context context) {
return TwidereApplication.getInstance(context).getApplicationModule(); return TwidereApplication.getInstance(context).getApplicationModule();
} }
@Provides
public AsyncTaskManager getAsyncTaskManager() {
return asyncTaskManager;
}
@Provides @Provides
public ImageLoader getImageLoader() { public ImageLoader getImageLoader() {
return imageLoader; return imageLoader;
@ -73,6 +88,11 @@ public class ApplicationModule {
return videoLoader; return videoLoader;
} }
@Provides
public TwidereImageDownloader getImageDownloader() {
return imageDownloader;
}
@Provides @Provides
public ActivityTracker getActivityTracker() { public ActivityTracker getActivityTracker() {
return activityTracker; return activityTracker;
@ -93,7 +113,7 @@ public class ApplicationModule {
return mediaLoaderWrapper; return mediaLoaderWrapper;
} }
private static ImageLoader createImageLoader(TwidereApplication application) { private static ImageLoader createImageLoader(TwidereApplication application, TwidereImageDownloader imageDownloader) {
final ImageLoader loader = ImageLoader.getInstance(); final ImageLoader loader = ImageLoader.getInstance();
final ImageLoaderConfiguration.Builder cb = new ImageLoaderConfiguration.Builder(application); final ImageLoaderConfiguration.Builder cb = new ImageLoaderConfiguration.Builder(application);
cb.threadPriority(Thread.NORM_PRIORITY - 2); cb.threadPriority(Thread.NORM_PRIORITY - 2);
@ -101,9 +121,14 @@ public class ApplicationModule {
cb.tasksProcessingOrder(QueueProcessingType.LIFO); cb.tasksProcessingOrder(QueueProcessingType.LIFO);
// cb.memoryCache(new ImageMemoryCache(40)); // cb.memoryCache(new ImageMemoryCache(40));
cb.diskCache(application.getDiskCache()); cb.diskCache(application.getDiskCache());
cb.imageDownloader(application.getImageDownloader()); cb.imageDownloader(imageDownloader);
L.writeDebugLogs(BuildConfig.DEBUG); L.writeDebugLogs(BuildConfig.DEBUG);
loader.init(cb.build()); loader.init(cb.build());
return loader; return loader;
} }
@Provides
public Network getNetwork() {
return network;
}
} }

View File

@ -0,0 +1,29 @@
/*
* Twidere - Twitter client for Android
*
* Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mariotaku.twidere.util.imageloader;
/**
* Created by mariotaku on 15/10/5.
*/
public class AccountFullImageExtra extends AccountExtra implements FullImageExtra {
public AccountFullImageExtra(long accountId) {
super(accountId);
}
}

View File

@ -0,0 +1,26 @@
/*
* Twidere - Twitter client for Android
*
* Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mariotaku.twidere.util.imageloader;
/**
* Created by mariotaku on 15/10/5.
*/
public interface FullImageExtra {
}

View File

@ -71,15 +71,13 @@ public class TwidereImageDownloader extends BaseImageDownloader implements Const
private final String mUserAgent; private final String mUserAgent;
private Thumbor mThumbor; private Thumbor mThumbor;
private RestHttpClient mClient; private RestHttpClient mClient;
private final boolean mFullImage;
private final String mTwitterProfileImageSize; private final String mTwitterProfileImageSize;
public TwidereImageDownloader(final Context context, final boolean fullImage, final boolean useThumbor) { public TwidereImageDownloader(final Context context, final boolean useThumbor) {
super(context); super(context);
mContext = context; mContext = context;
mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME, mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME,
Context.MODE_PRIVATE, SharedPreferenceConstants.class); Context.MODE_PRIVATE, SharedPreferenceConstants.class);
mFullImage = fullImage;
mTwitterProfileImageSize = context.getString(R.string.profile_image_size); mTwitterProfileImageSize = context.getString(R.string.profile_image_size);
mUseThumbor = useThumbor; mUseThumbor = useThumbor;
mUserAgent = UserAgentUtils.getDefaultUserAgentString(context); mUserAgent = UserAgentUtils.getDefaultUserAgentString(context);
@ -109,7 +107,7 @@ public class TwidereImageDownloader extends BaseImageDownloader implements Const
@Override @Override
protected InputStream getStreamFromNetwork(final String uriString, final Object extras) throws IOException { protected InputStream getStreamFromNetwork(final String uriString, final Object extras) throws IOException {
if (uriString == null) return null; if (uriString == null) return null;
final ParcelableMedia media = MediaPreviewUtils.getAllAvailableImage(uriString, mFullImage, mClient); final ParcelableMedia media = MediaPreviewUtils.getAllAvailableImage(uriString, extras instanceof FullImageExtra, mClient);
try { try {
final String mediaUrl = media != null ? media.media_url : uriString; final String mediaUrl = media != null ? media.media_url : uriString;
if (isTwitterProfileImage(uriString)) { if (isTwitterProfileImage(uriString)) {

View File

@ -51,7 +51,7 @@ import java.util.Arrays;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public class TwidereHostAddressResolver implements Constants, Network { public class TwidereNetwork implements Constants, Network {
private static final String RESOLVER_LOGTAG = "Twidere.Host"; private static final String RESOLVER_LOGTAG = "Twidere.Host";
@ -64,7 +64,7 @@ public class TwidereHostAddressResolver implements Constants, Network {
private Resolver mDns; private Resolver mDns;
public TwidereHostAddressResolver(final Context context) { public TwidereNetwork(final Context context) {
mHostMapping = context.getSharedPreferences(HOST_MAPPING_PREFERENCES_NAME, Context.MODE_PRIVATE); mHostMapping = context.getSharedPreferences(HOST_MAPPING_PREFERENCES_NAME, Context.MODE_PRIVATE);
mPreferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE); mPreferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final String address = mPreferences.getString(KEY_DNS_SERVER, DEFAULT_DNS_SERVER_ADDRESS); final String address = mPreferences.getString(KEY_DNS_SERVER, DEFAULT_DNS_SERVER_ADDRESS);