trying to fix NoDisplay theme crashes on Marshmallow

This commit is contained in:
Mariotaku Lee 2015-10-06 21:36:51 +08:00
parent 674202dbea
commit 3ef40e2e53
14 changed files with 213 additions and 153 deletions

View File

@ -47,7 +47,7 @@ android {
}
repositories {
maven { url 'http://repo.commonsware.com.s3.amazonaws.com' }
maven { url 'https://repo.commonsware.com.s3.amazonaws.com' }
}
configurations {

View File

@ -32,6 +32,7 @@ public class CreateComposeShortcutActivity extends Activity implements Constants
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setVisible(true);
final Intent intent = new Intent();
final Intent launch_intent = new Intent(INTENT_ACTION_COMPOSE);
final ShortcutIconResource icon = Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher);

View File

@ -45,6 +45,7 @@ public class MainActivity extends Activity implements Constants {
}
ThemeUtils.overrideActivityOpenAnimation(this);
super.onCreate(savedInstanceState);
setVisible(true);
final Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

View File

@ -33,6 +33,7 @@ public class UsageStatisticsActivity extends Activity implements Constants {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setVisible(true);
final Bundle fragmentArgs = new Bundle();
fragmentArgs.putInt(EXTRA_RESID, R.xml.preferences_usage_statistics);
final Intent intent = new Intent(this, SettingsActivity.class);

View File

@ -41,6 +41,12 @@ public class ColorPickerDialogActivity extends BaseSupportDialogActivity impleme
finish();
}
@Override
protected void onStart() {
super.onStart();
setVisible(true);
}
@Override
public void onColorCleared() {
setResult(RESULT_CLEARED);

View File

@ -74,6 +74,12 @@ public class DataExportActivity extends ThemedFragmentActivity implements FileSe
}
}
@Override
protected void onStart() {
super.onStart();
setVisible(true);
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

View File

@ -72,6 +72,12 @@ public class DataImportActivity extends ThemedFragmentActivity implements FileSe
}
}
@Override
protected void onStart() {
super.onStart();
setVisible(true);
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

View File

@ -45,6 +45,12 @@ public class FileSelectorActivity extends BaseSupportDialogActivity implements F
}
}
@Override
protected void onStart() {
super.onStart();
setVisible(true);
}
@Override
public void onDismissed(final DialogFragment df) {
if (!isFinishing()) {

View File

@ -21,6 +21,12 @@ public class ThemedImagePickerActivity extends ImagePickerActivity {
return new ThemedIntentBuilder(context);
}
@Override
protected void onStart() {
super.onStart();
setVisible(true);
}
public static final class ThemedIntentBuilder {
private final Context context;
private final IntentBuilder intentBuilder;

View File

@ -230,8 +230,8 @@ public class TwidereApplication extends MultiDexApplication implements Constants
@Override
public void onLowMemory() {
// final ApplicationModule module = getApplicationModule();
// module.getMediaLoaderWrapper().clearMemoryCache();
final ApplicationModule module = getApplicationModule();
module.onLowMemory();
super.onLowMemory();
}
@ -253,7 +253,7 @@ public class TwidereApplication extends MultiDexApplication implements Constants
}
public void reloadConnectivitySettings() {
ApplicationModule.get(this).getImageDownloader().reloadConnectivitySettings();
getApplicationModule().reloadConnectivitySettings();
}
private DiskCache createDiskCache(final String dirName) {

View File

@ -113,11 +113,17 @@ public class TwitterAPIFactory implements TwidereConstants {
}
public static RestHttpClient createHttpClient(final Context context, final Network network, final SharedPreferences prefs) {
final OkHttpClient client = new OkHttpClient();
updateHttpClientConfiguration(prefs, client);
Internal.instance.setNetwork(client, network);
return new OkHttpRestClient(context, client);
}
public static void updateHttpClientConfiguration(final SharedPreferences prefs, final OkHttpClient client) {
final int connectionTimeout = prefs.getInt(KEY_CONNECTION_TIMEOUT, 10);
final boolean ignoreSslError = prefs.getBoolean(KEY_IGNORE_SSL_ERROR, false);
final boolean enableProxy = prefs.getBoolean(KEY_ENABLE_PROXY, false);
final OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(connectionTimeout, TimeUnit.SECONDS);
final long connectionTimeoutMillis = TimeUnit.MILLISECONDS.convert(connectionTimeout, TimeUnit.SECONDS);
final SSLSocketFactory sslSocketFactory;
@ -131,8 +137,6 @@ public class TwitterAPIFactory implements TwidereConstants {
if (enableProxy) {
client.setProxy(getProxy(prefs));
}
Internal.instance.setNetwork(client, network);
return new OkHttpRestClient(context, client);
}
@ -161,7 +165,7 @@ public class TwitterAPIFactory implements TwidereConstants {
} else {
userAgent = getTwidereUserAgent(context);
}
factory.setClient(getDefaultHttpClient(context));
factory.setClient(ApplicationModule.get(context).getRestHttpClient());
factory.setConverter(new TwitterConverter());
factory.setEndpoint(endpoint);
factory.setAuthorization(auth);

View File

@ -25,19 +25,23 @@ import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.utils.L;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.internal.Network;
import org.mariotaku.restfu.http.RestHttpClient;
import org.mariotaku.twidere.BuildConfig;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.util.ActivityTracker;
import org.mariotaku.twidere.util.AsyncTaskManager;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.ReadStateManager;
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
import org.mariotaku.twidere.util.TwitterAPIFactory;
import org.mariotaku.twidere.util.VideoLoader;
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
import org.mariotaku.twidere.util.net.OkHttpRestClient;
import org.mariotaku.twidere.util.net.TwidereNetwork;
import dagger.Module;
@ -49,6 +53,8 @@ import dagger.Provides;
@Module
public class ApplicationModule {
private final SharedPreferencesWrapper sharedPreferences;
private final ActivityTracker activityTracker;
private final AsyncTwitterWrapper asyncTwitterWrapper;
private final ReadStateManager readStateManager;
@ -61,13 +67,14 @@ public class ApplicationModule {
private final RestHttpClient restHttpClient;
public ApplicationModule(TwidereApplication application) {
sharedPreferences = SharedPreferencesWrapper.getInstance(application, Constants.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
activityTracker = new ActivityTracker();
asyncTaskManager = AsyncTaskManager.getInstance();
asyncTwitterWrapper = new AsyncTwitterWrapper(application, asyncTaskManager);
readStateManager = new ReadStateManager(application);
network = new TwidereNetwork(application);
restHttpClient = TwitterAPIFactory.getDefaultHttpClient(application, network);
imageDownloader = new TwidereImageDownloader(application, network, true);
imageDownloader = new TwidereImageDownloader(application, restHttpClient, true);
imageLoader = createImageLoader(application, imageDownloader);
videoLoader = new VideoLoader(application, imageDownloader, asyncTaskManager);
mediaLoaderWrapper = new MediaLoaderWrapper(imageLoader, videoLoader);
@ -140,4 +147,17 @@ public class ApplicationModule {
public Network getNetwork() {
return network;
}
public void reloadConnectivitySettings() {
imageDownloader.reloadConnectivitySettings();
if (restHttpClient instanceof OkHttpRestClient) {
final OkHttpClient okHttpClient = ((OkHttpRestClient) restHttpClient).getClient();
TwitterAPIFactory.updateHttpClientConfiguration(sharedPreferences, okHttpClient);
}
}
public void onLowMemory() {
mediaLoaderWrapper.clearMemoryCache();
}
}

View File

@ -29,7 +29,6 @@ import android.webkit.URLUtil;
import com.nostra13.universalimageloader.core.assist.ContentLengthInputStream;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.squareup.okhttp.internal.Network;
import com.squareup.pollexor.Thumbor;
import com.squareup.pollexor.ThumborUrlBuilder;
@ -70,25 +69,24 @@ public class TwidereImageDownloader extends BaseImageDownloader implements Const
private final SharedPreferencesWrapper mPreferences;
private final boolean mUseThumbor;
private final String mUserAgent;
private final Network mNetwork;
private final RestHttpClient mClient;
private Thumbor mThumbor;
private RestHttpClient mClient;
private final String mTwitterProfileImageSize;
public TwidereImageDownloader(final Context context, final Network network, final boolean useThumbor) {
public TwidereImageDownloader(final Context context, final RestHttpClient client, final boolean useThumbor) {
super(context);
mContext = context;
mNetwork = network;
mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME,
Context.MODE_PRIVATE, SharedPreferenceConstants.class);
mTwitterProfileImageSize = context.getString(R.string.profile_image_size);
mUseThumbor = useThumbor;
mUserAgent = UserAgentUtils.getDefaultUserAgentString(context);
mClient = client;
reloadConnectivitySettings();
}
public void reloadConnectivitySettings() {
mClient = TwitterAPIFactory.getDefaultHttpClient(mContext, mNetwork);
if (mUseThumbor && mPreferences.getBoolean(KEY_THUMBOR_ENABLED)) {
final String address = mPreferences.getString(KEY_THUMBOR_ADDRESS, null);
final String securityKey = mPreferences.getString(KEY_THUMBOR_SECURITY_KEY, null);

View File

@ -70,7 +70,12 @@ public class OkHttpRestClient implements RestHttpClient {
DebugModeUtils.initForHttpClient(client);
}
public OkHttpClient getClient() {
return client;
}
@NonNull
@Override
public RestHttpResponse execute(RestHttpRequest restHttpRequest) throws IOException {
final Call call = newCall(restHttpRequest);