removed my own AsyncTask implementation

fixed Content-Type for multipart ( thanks to @jimmyxu )
This commit is contained in:
Mariotaku Lee 2015-03-30 02:19:25 +08:00
parent a96fe5b06c
commit cf6959c0f2
73 changed files with 285 additions and 465 deletions

View File

@ -27,9 +27,9 @@ import twitter4j.TwitterException;
public interface MediaResources {
public MediaUploadResponse uploadMedia(File file) throws TwitterException;
public MediaUploadResponse uploadMedia(File file) throws TwitterException;
public MediaUploadResponse uploadMedia(String fileName, InputStream fileBody, String fileType)
throws TwitterException;
public MediaUploadResponse uploadMedia(String fileName, InputStream fileBody, String fileType)
throws TwitterException;
}

View File

@ -36,8 +36,8 @@ import android.widget.Toast;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.nyan.NyanDaydreamService;
import org.mariotaku.twidere.nyan.NyanWallpaperService;
import org.mariotaku.twidere.nyan.NyanSurfaceHelper;
import org.mariotaku.twidere.nyan.NyanWallpaperService;
public class NyanActivity extends Activity implements Constants, OnLongClickListener, OnSharedPreferenceChangeListener {

View File

@ -30,6 +30,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
@ -57,7 +58,7 @@ import org.mariotaku.twidere.model.SupportTabSpec;
import org.mariotaku.twidere.preference.WizardPageHeaderPreference;
import org.mariotaku.twidere.preference.WizardPageNavPreference;
import org.mariotaku.twidere.provider.TwidereDataStore.Tabs;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.CustomTabUtils;
import org.mariotaku.twidere.util.MathUtils;
import org.mariotaku.twidere.util.ParseUtils;
@ -87,15 +88,15 @@ public class SettingsWizardActivity extends Activity implements Constants {
private AbsInitialSettingsTask mTask;
public void applyInitialSettings() {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) return;
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) return;
mTask = new InitialSettingsTask(this);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
}
public void applyInitialTabSettings() {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) return;
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) return;
mTask = new InitialTabSettingsTask(this);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
}
public void exitWizard() {
@ -503,7 +504,7 @@ public class SettingsWizardActivity extends Activity implements Constants {
}
}
static abstract class AbsInitialSettingsTask extends TwidereAsyncTask<Void, Void, Boolean> {
static abstract class AbsInitialSettingsTask extends AsyncTask<Void, Void, Boolean> {
private static final String FRAGMENT_TAG = "initial_settings_dialog";

View File

@ -23,7 +23,6 @@ import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import org.mariotaku.twidere.Constants;

View File

@ -26,6 +26,7 @@ import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.http.SslError;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.MenuItem;
@ -41,13 +42,13 @@ import android.widget.Toast;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.OAuthPasswordAuthenticator;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.TwitterContentUtils;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.util.net.TwidereHostResolverFactory;
import org.mariotaku.twidere.util.net.OkHttpClientFactory;
import org.mariotaku.twidere.util.net.TwidereHostResolverFactory;
import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
@ -121,10 +122,10 @@ public class BrowserSignInActivity extends BaseSupportDialogActivity implements
}
private void getRequestToken() {
if (mRequestToken != null || mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING)
if (mRequestToken != null || mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING)
return;
mTask = new GetRequestTokenTask(this);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
}
private void loadUrl(final String url) {
@ -207,7 +208,7 @@ public class BrowserSignInActivity extends BaseSupportDialogActivity implements
}
static class GetRequestTokenTask extends TwidereAsyncTask<Void, Void, RequestToken> {
static class GetRequestTokenTask extends AsyncTask<Void, Void, RequestToken> {
private final String mConsumerKey, mConsumerSecret;
private final TwidereApplication mApplication;

View File

@ -41,6 +41,7 @@ import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
@ -103,7 +104,7 @@ import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.preference.ServicePickerPreference;
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts;
import org.mariotaku.twidere.service.BackgroundOperationService;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.ContentValuesCreator;
import org.mariotaku.twidere.util.MathUtils;
@ -169,7 +170,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
private SharedPreferencesWrapper mPreferences;
private ParcelableLocation mRecentLocation;
private ContentResolver mResolver;
private TwidereAsyncTask<Void, Void, ?> mTask;
private AsyncTask<Void, Void, ?> mTask;
private GridView mMediaPreviewGrid;
private ActionMenuView mMenuBar;
private EditText mEditText;
@ -293,7 +294,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
break;
}
case MENU_DELETE: {
new DeleteImageTask(this).executeTask();
AsyncTaskUtils.executeTask(new DeleteImageTask(this));
break;
}
case MENU_TOGGLE_SENSITIVE: {
@ -386,8 +387,8 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
switch (requestCode) {
case REQUEST_TAKE_PHOTO: {
if (resultCode == Activity.RESULT_OK) {
mTask = new AddMediaTask(this, mTempPhotoUri, createTempImageUri(), ParcelableMedia.TYPE_IMAGE,
true).executeTask();
mTask = AsyncTaskUtils.executeTask(new AddMediaTask(this, mTempPhotoUri,
createTempImageUri(), ParcelableMedia.TYPE_IMAGE, true));
mTempPhotoUri = null;
}
break;
@ -395,16 +396,16 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
case REQUEST_PICK_IMAGE: {
if (resultCode == Activity.RESULT_OK) {
final Uri src = intent.getData();
mTask = new AddMediaTask(this, src, createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false)
.executeTask();
mTask = AsyncTaskUtils.executeTask(new AddMediaTask(this, src,
createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false));
}
break;
}
case REQUEST_OPEN_DOCUMENT: {
if (resultCode == Activity.RESULT_OK) {
final Uri src = intent.getData();
mTask = new AddMediaTask(this, src, createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false)
.executeTask();
mTask = AsyncTaskUtils.executeTask(new AddMediaTask(this, src,
createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false));
}
break;
}
@ -442,7 +443,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
@Override
public void onBackPressed() {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) return;
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) return;
final String text = mEditText != null ? ParseUtils.parseString(mEditText.getText()) : null;
final boolean textChanged = text != null && !text.isEmpty() && !text.equals(mOriginalText);
final boolean isEditingDraft = INTENT_ACTION_EDIT_DRAFT.equals(getIntent().getAction());
@ -451,7 +452,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
Toast.makeText(this, R.string.status_saved_to_draft, Toast.LENGTH_SHORT).show();
finish();
} else {
mTask = new DiscardTweetTask(this).executeTask();
mTask = AsyncTaskUtils.executeTask(new DiscardTweetTask(this));
}
}
@ -849,14 +850,14 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
final Uri extraStream = intent.getParcelableExtra(Intent.EXTRA_STREAM);
//TODO handle share_screenshot extra (Bitmap)
if (extraStream != null) {
new AddMediaTask(this, extraStream, createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false).executeTask();
AsyncTaskUtils.executeTask(new AddMediaTask(this, extraStream, createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false));
} else if (data != null) {
new AddMediaTask(this, data, createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false).executeTask();
AsyncTaskUtils.executeTask(new AddMediaTask(this, data, createTempImageUri(), ParcelableMedia.TYPE_IMAGE, false));
} else if (intent.hasExtra(EXTRA_SHARE_SCREENSHOT) && Utils.useShareScreenshot()) {
final Bitmap bitmap = intent.getParcelableExtra(EXTRA_SHARE_SCREENSHOT);
if (bitmap != null) {
try {
new AddBitmapTask(this, bitmap, createTempImageUri(), ParcelableMedia.TYPE_IMAGE).executeTask();
AsyncTaskUtils.executeTask(new AddBitmapTask(this, bitmap, createTempImageUri(), ParcelableMedia.TYPE_IMAGE));
} catch (IOException e) {
// ignore
bitmap.recycle();
@ -1347,7 +1348,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
}
private static class AddMediaTask extends TwidereAsyncTask<Void, Void, Boolean> {
private static class AddMediaTask extends AsyncTask<Void, Void, Boolean> {
private final ComposeActivity activity;
private final int media_type;
@ -1405,7 +1406,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
}
}
private static class DeleteImageTask extends TwidereAsyncTask<Void, Void, Boolean> {
private static class DeleteImageTask extends AsyncTask<Void, Void, Boolean> {
final ComposeActivity mActivity;
private final ParcelableMediaUpdate[] mMedia;
@ -1451,7 +1452,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements TextWatch
}
}
private static class DiscardTweetTask extends TwidereAsyncTask<Void, Void, Void> {
private static class DiscardTweetTask extends AsyncTask<Void, Void, Void> {
final ComposeActivity mActivity;

View File

@ -30,6 +30,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
@ -38,7 +39,6 @@ import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBar;
import android.util.Log;
import android.util.SparseBooleanArray;
@ -62,7 +62,7 @@ import org.mariotaku.twidere.model.DraftItem;
import org.mariotaku.twidere.model.ParcelableMediaUpdate;
import org.mariotaku.twidere.model.ParcelableStatusUpdate;
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.ThemeUtils;
@ -270,8 +270,7 @@ public class DraftsActivity extends BaseActionBarActivity implements LoaderCallb
case DialogInterface.BUTTON_POSITIVE: {
final Bundle args = getArguments();
if (args == null) return;
final DeleteDraftsTask task = new DeleteDraftsTask(getActivity(), args.getLongArray(EXTRA_IDS));
task.executeTask();
AsyncTaskUtils.executeTask(new DeleteDraftsTask(getActivity(), args.getLongArray(EXTRA_IDS)));
break;
}
}
@ -290,7 +289,7 @@ public class DraftsActivity extends BaseActionBarActivity implements LoaderCallb
}
private static class DeleteDraftsTask extends TwidereAsyncTask<Void, Void, Integer> {
private static class DeleteDraftsTask extends AsyncTask<Void, Void, Integer> {
private static final String FRAGMENT_TAG_DELETING_DRAFTS = "deleting_drafts";
private final FragmentActivity mActivity;

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.activity.support;
import static android.os.Environment.getExternalStorageDirectory;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@ -31,6 +29,8 @@ import org.mariotaku.twidere.util.ThemeUtils;
import java.io.File;
import static android.os.Environment.getExternalStorageDirectory;
public class FileSelectorActivity extends BaseSupportDialogActivity implements FileSelectorDialogFragment.Callback {
@Override

View File

@ -37,6 +37,7 @@ import android.graphics.Rect;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@ -90,7 +91,7 @@ import org.mariotaku.twidere.graphic.EmptyDrawable;
import org.mariotaku.twidere.model.ParcelableAccount;
import org.mariotaku.twidere.model.SupportTabSpec;
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.ColorUtils;
import org.mariotaku.twidere.util.CustomTabUtils;
@ -592,9 +593,9 @@ public class HomeActivity extends BaseActionBarActivity implements OnClickListen
public void updateUnreadCount() {
if (mTabIndicator == null || mUpdateUnreadCountTask != null
&& mUpdateUnreadCountTask.getStatus() == TwidereAsyncTask.Status.RUNNING) return;
&& mUpdateUnreadCountTask.getStatus() == AsyncTask.Status.RUNNING) return;
mUpdateUnreadCountTask = new UpdateUnreadCountTask(mTabIndicator);
mUpdateUnreadCountTask.executeTask();
AsyncTaskUtils.executeTask(mUpdateUnreadCountTask);
mTabIndicator.setDisplayBadge(mPreferences.getBoolean(KEY_UNREAD_COUNT, true));
}
@ -959,7 +960,7 @@ public class HomeActivity extends BaseActionBarActivity implements OnClickListen
}
private static class UpdateUnreadCountTask extends TwidereAsyncTask<Void, Void, int[]> {
private static class UpdateUnreadCountTask extends AsyncTask<Void, Void, int[]> {
private final Context mContext;
private final TabPagerIndicator mIndicator;

View File

@ -1,7 +1,5 @@
package org.mariotaku.twidere.activity.support;
import static android.os.Environment.getExternalStorageState;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
@ -35,6 +33,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import static android.os.Environment.getExternalStorageState;
public class ImagePickerActivity extends ThemedActionBarActivity {
public static final int REQUEST_PICK_IMAGE = 101;

View File

@ -30,6 +30,7 @@ import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Color;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.ActionBar;
@ -50,7 +51,7 @@ import org.mariotaku.twidere.activity.SettingsActivity;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.fragment.support.BaseSupportDialogFragment;
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.ContentValuesCreator;
import org.mariotaku.twidere.util.OAuthPasswordAuthenticator;
import org.mariotaku.twidere.util.OAuthPasswordAuthenticator.AuthenticationException;
@ -149,12 +150,12 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
@Override
public void onBackPressed() {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING && !mBackPressed) {
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING && !mBackPressed) {
final Toast toast = Toast.makeText(this, R.string.signing_in_please_wait, Toast.LENGTH_SHORT);
toast.show();
return;
}
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) {
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) {
mTask.cancel(false);
}
super.onBackPressed();
@ -214,14 +215,14 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
break;
}
case MENU_SETTINGS: {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING)
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING)
return false;
final Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
break;
}
case MENU_EDIT_API: {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING)
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING)
return false;
setDefaultAPI();
final Intent intent = new Intent(this, APIEditorActivity.class);
@ -236,7 +237,7 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
}
case MENU_OPEN_IN_BROWSER: {
if (mAuthType != Accounts.AUTH_TYPE_OAUTH || mTask != null
&& mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) return false;
&& mTask.getStatus() == AsyncTask.Status.RUNNING) return false;
saveEditedText();
final Intent intent = new Intent(this, BrowserSignInActivity.class);
intent.putExtra(Accounts.CONSUMER_KEY, mConsumerKey);
@ -322,7 +323,7 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
}
private void doLogin() {
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) {
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) {
mTask.cancel(true);
}
saveEditedText();
@ -330,12 +331,12 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
final Configuration conf = getConfiguration();
mTask = new SignInTask(this, conf, mUsername, mPassword, mAuthType, mAPIUrlFormat,
mSameOAuthSigningUrl, mNoVersionSuffix);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
}
private void doLogin(final Intent intent) {
if (intent == null) return;
if (mTask != null && mTask.getStatus() == TwidereAsyncTask.Status.RUNNING) {
if (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING) {
mTask.cancel(true);
}
saveEditedText();
@ -346,7 +347,7 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
final String verifier = intent.getStringExtra(EXTRA_OAUTH_VERIFIER);
mTask = new BrowserSignInTask(this, conf, token, secret, verifier, mAPIUrlFormat,
mSameOAuthSigningUrl, mNoVersionSuffix);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
}
private Configuration getConfiguration() {
@ -502,7 +503,7 @@ public class SignInActivity extends BaseActionBarActivity implements TwitterCons
mSignUpButton.setEnabled(false);
}
public static abstract class AbstractSignInTask extends TwidereAsyncTask<Void, Void, SignInResponse> {
public static abstract class AbstractSignInTask extends AsyncTask<Void, Void, SignInResponse> {
protected final Configuration conf;
protected final SignInActivity callback;

View File

@ -23,6 +23,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
@ -42,7 +43,7 @@ import org.mariotaku.twidere.fragment.support.SupportProgressDialogFragment;
import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.model.SingleResponse;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import java.util.ArrayList;
import java.util.List;
@ -203,11 +204,11 @@ public class UserListSelectorActivity extends BaseSupportDialogActivity implemen
return getIntent().getLongExtra(EXTRA_ACCOUNT_ID, -1);
}
private void getUserLists(final String screen_name) {
if (screen_name == null) return;
mScreenName = screen_name;
final GetUserListsTask task = new GetUserListsTask(this, getAccountId(), screen_name);
task.executeTask();
private void getUserLists(final String screenName) {
if (screenName == null) return;
mScreenName = screenName;
final GetUserListsTask task = new GetUserListsTask(this, getAccountId(), screenName);
AsyncTaskUtils.executeTask(task);
}
private boolean isSelectingUser() {
@ -216,17 +217,17 @@ public class UserListSelectorActivity extends BaseSupportDialogActivity implemen
private void searchUser(final String name) {
final SearchUsersTask task = new SearchUsersTask(this, getAccountId(), name);
task.executeTask();
AsyncTaskUtils.executeTask(task);
}
private void setUserListsData(final List<ParcelableUserList> data, final boolean is_my_account) {
private void setUserListsData(final List<ParcelableUserList> data, final boolean isMyAccount) {
mUserListsAdapter.setData(data, true);
mUsersListContainer.setVisibility(View.GONE);
mUserListsContainer.setVisibility(View.VISIBLE);
mCreateUserListContainer.setVisibility(is_my_account ? View.VISIBLE : View.GONE);
mCreateUserListContainer.setVisibility(isMyAccount ? View.VISIBLE : View.GONE);
}
private static class GetUserListsTask extends TwidereAsyncTask<Void, Void, SingleResponse<List<ParcelableUserList>>> {
private static class GetUserListsTask extends AsyncTask<Void, Void, SingleResponse<List<ParcelableUserList>>> {
private static final String FRAGMENT_TAG_GET_USER_LISTS = "get_user_lists";
private final UserListSelectorActivity mActivity;
@ -288,7 +289,7 @@ public class UserListSelectorActivity extends BaseSupportDialogActivity implemen
}
private static class SearchUsersTask extends TwidereAsyncTask<Void, Void, SingleResponse<List<ParcelableUser>>> {
private static class SearchUsersTask extends AsyncTask<Void, Void, SingleResponse<List<ParcelableUser>>> {
private static final String FRAGMENT_TAG_SEARCH_USERS = "search_users";
private final UserListSelectorActivity mActivity;

View File

@ -22,6 +22,7 @@ package org.mariotaku.twidere.activity.support;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
@ -43,9 +44,8 @@ import org.mariotaku.twidere.fragment.support.SupportProgressDialogFragment;
import org.mariotaku.twidere.loader.support.ParcelableUserLoader;
import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.model.SingleResponse;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.task.TwidereAsyncTask.Status;
import org.mariotaku.twidere.util.AsyncTaskManager;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.AsyncTwitterWrapper.UpdateProfileBannerImageTask;
import org.mariotaku.twidere.util.AsyncTwitterWrapper.UpdateProfileImageTask;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
@ -81,7 +81,7 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
private MediaLoaderWrapper mLazyImageLoader;
private AsyncTaskManager mAsyncTaskManager;
private TwidereAsyncTask<Void, Void, ?> mTask;
private AsyncTask<Void, Void, ?> mTask;
private ImageView mProfileImageView;
private ImageView mProfileBannerView;
@ -190,7 +190,8 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
@Override
public void onClick(final View view) {
final ParcelableUser user = mUser;
if (user == null || (mTask != null && mTask.getStatus() == Status.RUNNING)) return;
if (user == null || (mTask != null && mTask.getStatus() == AsyncTask.Status.RUNNING))
return;
switch (view.getId()) {
case R.id.profile_image: {
break;
@ -221,7 +222,7 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
}
case R.id.profile_banner_remove: {
mTask = new RemoveProfileBannerTaskInternal(user.account_id);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
break;
}
case R.id.actionbar_cancel: {
@ -237,7 +238,7 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
final int backgroundColor = mBackgroundColor.getColor();
mTask = new UpdateProfileTaskInternal(this, mAccountId, mUser, name, url, location,
description, linkColor, backgroundColor);
mTask.executeTask();
AsyncTaskUtils.executeTask(mTask);
break;
}
case R.id.set_link_color: {
@ -314,13 +315,13 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
if (resultCode == RESULT_CANCELED) return;
switch (requestCode) {
case REQUEST_UPLOAD_PROFILE_BANNER_IMAGE: {
if (mTask == null || mTask.getStatus() != Status.PENDING) return;
mTask.executeTask();
if (mTask == null || mTask.getStatus() != AsyncTask.Status.PENDING) return;
AsyncTaskUtils.executeTask(mTask);
break;
}
case REQUEST_UPLOAD_PROFILE_IMAGE: {
if (mTask == null || mTask.getStatus() != Status.PENDING) return;
mTask.executeTask();
if (mTask == null || mTask.getStatus() != AsyncTask.Status.PENDING) return;
AsyncTaskUtils.executeTask(mTask);
break;
}
case REQUEST_PICK_LINK_COLOR: {
@ -420,7 +421,7 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
mDoneButton.setEnabled(isProfileChanged());
}
static class UpdateProfileTaskInternal extends TwidereAsyncTask<Void, Void, SingleResponse<ParcelableUser>> {
static class UpdateProfileTaskInternal extends AsyncTask<Void, Void, SingleResponse<ParcelableUser>> {
private static final String DIALOG_FRAGMENT_TAG = "updating_user_profile";
private final UserProfileEditorActivity mActivity;
@ -510,7 +511,7 @@ public class UserProfileEditorActivity extends BaseActionBarActivity implements
}
class RemoveProfileBannerTaskInternal extends TwidereAsyncTask<Void, Void, SingleResponse<Boolean>> {
class RemoveProfileBannerTaskInternal extends AsyncTask<Void, Void, SingleResponse<Boolean>> {
private final long account_id;

View File

@ -23,7 +23,6 @@ import android.content.Context;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import org.mariotaku.twidere.model.ParcelableMedia;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.model.ParcelableStatus.CursorIndices;
import org.mariotaku.twidere.view.holder.StatusViewHolder;

View File

@ -32,9 +32,9 @@ import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.model.DraftItem;
import org.mariotaku.twidere.model.ParcelableMediaUpdate;
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts;
import org.mariotaku.twidere.util.ImageLoadingHandler;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.TwidereArrayUtils;
import org.mariotaku.twidere.util.ImageLoadingHandler;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.view.holder.DraftViewHolder;

View File

@ -28,8 +28,8 @@ import android.widget.ImageView;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.ImageLoadingHandler;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import java.util.Collection;

View File

@ -24,9 +24,7 @@ import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.View;
import org.mariotaku.twidere.model.ParcelableActivity;
import org.mariotaku.twidere.model.ParcelableMedia;
import org.mariotaku.twidere.view.holder.ActivityTitleSummaryViewHolder;
import org.mariotaku.twidere.view.holder.StatusViewHolder;
import java.util.List;

View File

@ -22,8 +22,8 @@ package org.mariotaku.twidere.adapter.iface;
import android.content.Context;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.ImageLoadingHandler;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.view.ShapedImageView.ShapeStyle;
/**

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.fragment;
import static org.mariotaku.twidere.util.UserColorNameUtils.getDisplayName;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;

View File

@ -26,9 +26,6 @@ import android.content.ContentResolver;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;

View File

@ -19,11 +19,10 @@
package org.mariotaku.twidere.fragment;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
@ -53,8 +52,6 @@ import android.widget.TextView;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.adapter.ArrayAdapter;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.HostsFileParser;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.ThemeUtils;
@ -204,6 +201,7 @@ public class HostMappingsListFragment extends BaseListFragment implements MultiC
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final Context wrapped = ThemeUtils.getDialogThemedContext(getActivity());
final AlertDialog.Builder builder = new AlertDialog.Builder(wrapped);
@SuppressLint("InflateParams")
final View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_host_mapping, null);
builder.setView(view);
mEditHost = (EditText) view.findViewById(R.id.host);
@ -297,45 +295,4 @@ public class HostMappingsListFragment extends BaseListFragment implements MultiC
}
static class ImportHostsTask extends TwidereAsyncTask<Void, Void, Boolean> {
private final SharedPreferences mPreferences;
private final HostMappingsListFragment mActivity;
private final String mPath;
ImportHostsTask(final HostMappingsListFragment activity, final String path) {
mActivity = activity;
mPath = path;
mPreferences = activity.getSharedPreferences(HOST_MAPPING_PREFERENCES_NAME, Context.MODE_PRIVATE);
}
@Override
protected Boolean doInBackground(final Void... params) {
final HostsFileParser hosts = new HostsFileParser(mPath);
final boolean result = hosts.reload();
final SharedPreferences.Editor editor = mPreferences.edit();
for (final Map.Entry<String, String> entry : hosts.getAll().entrySet()) {
editor.putString(entry.getKey(), entry.getValue());
}
return result && editor.commit();
}
@Override
protected void onPostExecute(final Boolean result) {
final FragmentManager fm = mActivity.getFragmentManager();
final Fragment f = fm.findFragmentByTag("import_hosts_progress");
if (f instanceof DialogFragment) {
((DialogFragment) f).dismiss();
}
mActivity.reloadHostMappings();
}
@Override
protected void onPreExecute() {
final FragmentManager fm = mActivity.getFragmentManager();
final DialogFragment f = new ProgressDialogFragment();
f.setCancelable(false);
f.show(fm, "import_hosts_progress");
}
}
}

View File

@ -19,9 +19,6 @@
package org.mariotaku.twidere.fragment;
import static android.text.TextUtils.isEmpty;
import static org.mariotaku.twidere.util.Utils.getDefaultAccountScreenName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@ -40,6 +37,9 @@ import org.mariotaku.twidere.util.ParseUtils;
import java.text.NumberFormat;
import java.text.ParseException;
import static android.text.TextUtils.isEmpty;
import static org.mariotaku.twidere.util.Utils.getDefaultAccountScreenName;
public class PayPalDonateFragment extends BaseFragment implements OnClickListener, TextWatcher {
private EditText mEditName, mEditAmount;

View File

@ -28,6 +28,7 @@ import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import android.support.v7.widget.FixedLinearLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.OnScrollListener;
@ -45,7 +46,6 @@ import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.fragment.iface.RefreshScrollTopInterface;
import org.mariotaku.twidere.model.ParcelableActivity;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import android.support.v7.widget.FixedLinearLayoutManager;
import org.mariotaku.twidere.util.SimpleDrawerCallback;
import org.mariotaku.twidere.util.ThemeUtils;
import org.mariotaku.twidere.util.Utils;

View File

@ -19,11 +19,6 @@
package org.mariotaku.twidere.fragment.support;
import static org.mariotaku.twidere.util.ContentValuesCreator.createFilteredUser;
import static org.mariotaku.twidere.util.UserColorNameUtils.getDisplayName;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ContentResolver;
@ -51,6 +46,10 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import static org.mariotaku.twidere.util.ContentValuesCreator.createFilteredUser;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment implements OnMultiChoiceClickListener,
OnClickListener {

View File

@ -28,7 +28,6 @@ import android.content.SharedPreferences;
import android.graphics.Rect;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.ListFragment;
import android.view.Gravity;
import android.view.LayoutInflater;

View File

@ -25,6 +25,7 @@ import android.content.SharedPreferences;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.content.Loader;
@ -38,7 +39,7 @@ import org.mariotaku.twidere.adapter.CursorStatusesAdapter;
import org.mariotaku.twidere.loader.support.ExtendedCursorLoader;
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.util.message.FavoriteCreatedEvent;
import org.mariotaku.twidere.util.message.FavoriteDestroyedEvent;
@ -172,7 +173,7 @@ public abstract class CursorStatusesFragment extends AbsStatusesFragment<Cursor>
@Override
public void onLoadMoreContents() {
new TwidereAsyncTask<Void, Void, long[][]>() {
AsyncTaskUtils.executeTask(new AsyncTask<Void, Void, long[][]>() {
@Override
protected long[][] doInBackground(final Void... params) {
@ -187,12 +188,12 @@ public abstract class CursorStatusesFragment extends AbsStatusesFragment<Cursor>
getStatuses(result[0], result[1], result[2]);
}
}.executeTask();
});
}
@Override
public boolean triggerRefresh() {
new TwidereAsyncTask<Void, Void, long[][]>() {
AsyncTaskUtils.executeTask(new AsyncTask<Void, Void, long[][]>() {
@Override
protected long[][] doInBackground(final Void... params) {
@ -207,7 +208,7 @@ public abstract class CursorStatusesFragment extends AbsStatusesFragment<Cursor>
getStatuses(result[0], result[1], result[2]);
}
}.executeTask();
});
return true;
}

View File

@ -27,6 +27,7 @@ import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Rect;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
@ -64,7 +65,7 @@ import org.mariotaku.twidere.fragment.iface.RefreshScrollTopInterface;
import org.mariotaku.twidere.provider.TwidereDataStore.Accounts;
import org.mariotaku.twidere.provider.TwidereDataStore.DirectMessages;
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.ContentListScrollListener;
import org.mariotaku.twidere.util.ContentListScrollListener.ContentListSupport;
@ -165,7 +166,7 @@ public class DirectMessagesFragment extends BaseSupportFragment implements Loade
@Override
public void onRefresh() {
new TwidereAsyncTask<Void, Void, long[][]>() {
AsyncTaskUtils.executeTask(new AsyncTask<Void, Void, long[][]>() {
@Override
protected long[][] doInBackground(final Void... params) {
@ -183,7 +184,7 @@ public class DirectMessagesFragment extends BaseSupportFragment implements Loade
twitter.getSentDirectMessagesAsync(result[0], null, null);
}
}.executeTask();
});
}
private void setListShown(boolean shown) {
@ -357,7 +358,7 @@ public class DirectMessagesFragment extends BaseSupportFragment implements Loade
//
private void loadMoreMessages() {
if (isRefreshing()) return;
new TwidereAsyncTask<Void, Void, long[][]>() {
AsyncTaskUtils.executeTask(new AsyncTask<Void, Void, long[][]>() {
@Override
protected long[][] doInBackground(final Void... params) {
@ -376,7 +377,7 @@ public class DirectMessagesFragment extends BaseSupportFragment implements Loade
twitter.getSentDirectMessagesAsync(result[0], result[2], null);
}
}.executeTask();
});
}
public MessageEntriesAdapter getAdapter() {
@ -397,13 +398,13 @@ public class DirectMessagesFragment extends BaseSupportFragment implements Loade
}
private void removeUnreadCounts() {
if (mRemoveUnreadCountsTask != null && mRemoveUnreadCountsTask.getStatus() == TwidereAsyncTask.Status.RUNNING)
if (mRemoveUnreadCountsTask != null && mRemoveUnreadCountsTask.getStatus() == AsyncTask.Status.RUNNING)
return;
mRemoveUnreadCountsTask = new RemoveUnreadCountsTask(mReadPositions, this);
mRemoveUnreadCountsTask.executeTask();
AsyncTaskUtils.executeTask(mRemoveUnreadCountsTask);
}
static class RemoveUnreadCountsTask extends TwidereAsyncTask<Void, Void, Void> {
static class RemoveUnreadCountsTask extends AsyncTask<Void, Void, Void> {
private final Set<Integer> read_positions;
private final MessageEntriesAdapter adapter;
private final DirectMessagesFragment fragment;

View File

@ -19,9 +19,6 @@
package org.mariotaku.twidere.fragment.support;
import static org.mariotaku.twidere.util.UserColorNameUtils.clearUserNickname;
import static org.mariotaku.twidere.util.UserColorNameUtils.setUserNickname;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
@ -37,6 +34,9 @@ import org.mariotaku.twidere.R;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.ThemeUtils;
import static org.mariotaku.twidere.util.UserColorNameUtils.clearUserNickname;
import static org.mariotaku.twidere.util.UserColorNameUtils.setUserNickname;
public class SetUserNicknameDialogFragment extends BaseSupportDialogFragment implements OnClickListener {
private static final String FRAGMENT_TAG_SET_USER_NICKNAME = "set_user_nickname";

View File

@ -31,6 +31,7 @@ import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter.CreateNdefMessageCallback;
import android.nfc.NfcEvent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
@ -76,9 +77,8 @@ import org.mariotaku.twidere.model.ParcelableAccount.ParcelableCredentials;
import org.mariotaku.twidere.model.ParcelableMedia;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.model.SingleResponse;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.task.TwidereAsyncTask.Status;
import org.mariotaku.twidere.text.method.StatusContentMovementMethod;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.CompareUtils;
import org.mariotaku.twidere.util.ImageLoadingHandler;
@ -369,11 +369,11 @@ public class StatusFragment extends BaseSupportFragment
}
private void loadConversation(ParcelableStatus status) {
if (mLoadConversationTask != null && mLoadConversationTask.getStatus() == Status.RUNNING) {
if (AsyncTaskUtils.isTaskRunning(mLoadConversationTask)) {
mLoadConversationTask.cancel(true);
}
mLoadConversationTask = new LoadConversationTask(this);
mLoadConversationTask.executeTask(status);
AsyncTaskUtils.executeTask(mLoadConversationTask, status);
}
private void loadReplies(ParcelableStatus status) {
@ -860,7 +860,7 @@ public class StatusFragment extends BaseSupportFragment
}
static class LoadConversationTask extends TwidereAsyncTask<ParcelableStatus, ParcelableStatus,
static class LoadConversationTask extends AsyncTask<ParcelableStatus, ParcelableStatus,
ListResponse<ParcelableStatus>> {
final Context context;

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.fragment.support;
import static org.mariotaku.twidere.util.Utils.getAccountScreenName;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@ -30,6 +28,8 @@ import android.os.Bundle;
import org.mariotaku.twidere.loader.support.CursorSupportUsersLoader;
import org.mariotaku.twidere.loader.support.UserFollowersLoader;
import static org.mariotaku.twidere.util.Utils.getAccountScreenName;
public class UserFollowersFragment extends CursorSupportUsersListFragment {
private final BroadcastReceiver mStateReceiver = new BroadcastReceiver() {

View File

@ -107,9 +107,9 @@ import org.mariotaku.twidere.provider.TwidereDataStore.Filters;
import org.mariotaku.twidere.text.TextAlphaSpan;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.ContentValuesCreator;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.LinkCreator;
import org.mariotaku.twidere.util.MathUtils;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.ThemeUtils;
import org.mariotaku.twidere.util.TwidereLinkify;

View File

@ -70,8 +70,8 @@ import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.model.SingleResponse;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.LinkCreator;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.OnLinkClickHandler;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.ThemeUtils;

View File

@ -23,6 +23,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
@ -32,7 +33,7 @@ import org.mariotaku.twidere.loader.support.CursorSupportUsersLoader;
import org.mariotaku.twidere.loader.support.UserListMembersLoader;
import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import twitter4j.Twitter;
import twitter4j.TwitterException;
@ -86,7 +87,7 @@ public class UserListMembersFragment extends CursorSupportUsersListFragment impl
final long userId = args.getLong(EXTRA_USER_ID, -1);
final String screenName = args.getString(EXTRA_SCREEN_NAME);
final String listName = args.getString(EXTRA_LIST_NAME);
new GetUserListTask(accountId, listId, listName, userId, screenName).executeTask();
AsyncTaskUtils.executeTask(new GetUserListTask(accountId, listId, listName, userId, screenName));
}
}
@ -130,7 +131,7 @@ public class UserListMembersFragment extends CursorSupportUsersListFragment impl
return R.menu.action_user_list_member;
}
private class GetUserListTask extends TwidereAsyncTask<Void, Void, ParcelableUserList> {
private class GetUserListTask extends AsyncTask<Void, Void, ParcelableUserList> {
private final long accountId, userId;
private final long listId;

View File

@ -22,8 +22,8 @@ import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.loader.support.MediaTimelineLoader;
import org.mariotaku.twidere.model.ParcelableMedia;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.ImageLoadingHandler;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
import org.mariotaku.twidere.util.SimpleDrawerCallback;
import org.mariotaku.twidere.view.HeaderDrawerLayout.DrawerCallback;
import org.mariotaku.twidere.view.MediaSizeImageView;

View File

@ -26,8 +26,6 @@ import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.DrawableContainer;
import android.os.Build;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.view.View;

View File

@ -24,10 +24,10 @@ import android.content.SharedPreferences;
import org.mariotaku.twidere.model.ParcelableUser;
import twitter4j.CursorSupport;
import java.util.List;
import twitter4j.CursorSupport;
public abstract class BaseCursorSupportUsersLoader extends Twitter4JUsersLoader {
private final long mCursor;

View File

@ -19,22 +19,22 @@
package org.mariotaku.twidere.loader.support;
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.util.collection.NoDuplicatesArrayList;
import java.util.Collections;
import java.util.List;
import twitter4j.CursorSupport;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.UserList;
import java.util.Collections;
import java.util.List;
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
public abstract class BaseUserListsLoader extends AsyncTaskLoader<List<ParcelableUserList>> {

View File

@ -23,14 +23,14 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
public abstract class CursorSupportUsersLoader extends BaseCursorSupportUsersLoader {
public CursorSupportUsersLoader(final Context context, final long account_id, final long cursor,

View File

@ -23,14 +23,14 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.IDs;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
public abstract class IDsUsersLoader extends BaseCursorSupportUsersLoader {
public IDsUsersLoader(final Context context, final long account_id, final long cursor,

View File

@ -23,13 +23,13 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.IDs;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import java.util.List;
public class IncomingFriendshipsLoader extends IDsUsersLoader {
public IncomingFriendshipsLoader(final Context context, final long account_id, final long max_id,

View File

@ -23,14 +23,14 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
public class MutesUsersLoader extends CursorSupportUsersLoader {
public MutesUsersLoader(final Context context, final long account_id, final long cursor,

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.loader.support;
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
@ -29,6 +27,8 @@ import twitter4j.SavedSearch;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
public class SavedSearchesLoader extends AsyncTaskLoader<ResponseList<SavedSearch>> {
private final long mAccountId;

View File

@ -23,13 +23,13 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.IDs;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import java.util.List;
public class StatusFavoritersLoader extends IDsUsersLoader {
private final long mStatusId;

View File

@ -23,13 +23,13 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.IDs;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import java.util.List;
public class StatusRetweetersLoader extends IDsUsersLoader {
private final long mStatusId;

View File

@ -19,18 +19,18 @@
package org.mariotaku.twidere.loader.support;
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.Collections;
import java.util.List;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.Collections;
import java.util.List;
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
public abstract class Twitter4JUsersLoader extends ParcelableUsersLoader {

View File

@ -23,14 +23,14 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
public class UserBlocksLoader extends CursorSupportUsersLoader {
public UserBlocksLoader(final Context context, final long account_id, final long cursor,

View File

@ -23,14 +23,14 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
public class UserFollowersLoader extends CursorSupportUsersLoader {
private final long mUserId;

View File

@ -23,14 +23,14 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUser;
import java.util.List;
import twitter4j.CursorPaging;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import java.util.List;
public class UserFriendsLoader extends CursorSupportUsersLoader {
private final long mUserId;

View File

@ -23,13 +23,13 @@ import android.content.Context;
import org.mariotaku.twidere.model.ParcelableUserList;
import java.util.List;
import twitter4j.PageableResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.UserList;
import java.util.List;
public class UserListMembershipsLoader extends BaseUserListsLoader {
private final long mUserId;

View File

@ -19,13 +19,13 @@
package org.mariotaku.twidere.model;
import android.app.Fragment;
import android.os.Bundle;
import static org.mariotaku.twidere.util.CompareUtils.bundleEquals;
import static org.mariotaku.twidere.util.CompareUtils.classEquals;
import static org.mariotaku.twidere.util.CompareUtils.objectEquals;
import android.app.Fragment;
import android.os.Bundle;
public class TabSpec {
public final CharSequence name;

View File

@ -25,6 +25,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.AsyncTask;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
@ -46,7 +47,7 @@ import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.model.ParcelableAccount;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.BitmapUtils;
import org.mariotaku.twidere.util.MediaLoaderWrapper;
@ -90,7 +91,7 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
@Override
protected void onAttachedToHierarchy(final PreferenceManager preferenceManager) {
super.onAttachedToHierarchy(preferenceManager);
new LoadAccountsTask(this).executeTask();
AsyncTaskUtils.executeTask(new LoadAccountsTask(this));
}
protected abstract void setupPreference(AccountItemPreference preference, ParcelableAccount account);
@ -213,7 +214,7 @@ public abstract class AccountsListPreference extends PreferenceCategory implemen
}
}
private static class LoadAccountsTask extends TwidereAsyncTask<Void, Void, List<ParcelableAccount>> {
private static class LoadAccountsTask extends AsyncTask<Void, Void, List<ParcelableAccount>> {
private final AccountsListPreference mPreference;

View File

@ -1,12 +1,9 @@
package org.mariotaku.twidere.preference;
import android.content.Context;
import android.content.res.TypedArray;
import android.preference.Preference;
import android.util.AttributeSet;
import org.mariotaku.twidere.R;
/**
* Created by mariotaku on 14-7-28.
*/

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.preference;
import static org.mariotaku.twidere.util.Utils.getDefaultTwitterInstance;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
@ -42,14 +40,16 @@ import android.widget.TextView;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import java.text.Collator;
import java.util.Comparator;
import java.util.List;
import twitter4j.ResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.api.HelpResources.Language;
import java.text.Collator;
import java.util.Comparator;
import java.util.List;
import static org.mariotaku.twidere.util.Utils.getDefaultTwitterInstance;
public class TranslationDestinationPreference extends Preference implements Constants, OnClickListener {

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.preference;
import static org.mariotaku.twidere.util.Utils.getDefaultTwitterInstance;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
@ -40,14 +38,16 @@ import android.widget.TextView;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import java.text.Collator;
import java.util.Comparator;
import java.util.List;
import twitter4j.Location;
import twitter4j.ResponseList;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import java.text.Collator;
import java.util.Comparator;
import java.util.List;
import static org.mariotaku.twidere.util.Utils.getDefaultTwitterInstance;
public class TrendsLocationPreference extends Preference implements Constants, OnClickListener {

View File

@ -27,8 +27,8 @@ import android.net.Uri;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.model.ParcelableLocation;
import org.mariotaku.twidere.util.TwidereArrayUtils;
import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.TwidereArrayUtils;
public class TwidereCommands {

View File

@ -19,9 +19,6 @@
package org.mariotaku.twidere.receiver;
import static org.mariotaku.twidere.util.Utils.startUsageStatisticsServiceIfNeeded;
import static org.mariotaku.twidere.util.Utils.startRefreshServiceIfNeeded;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@ -34,6 +31,9 @@ import org.mariotaku.twidere.util.Utils;
import edu.tsinghua.spice.Utilies.NetworkStateUtil;
import edu.tsinghua.spice.Utilies.SpiceProfilingUtil;
import static org.mariotaku.twidere.util.Utils.startRefreshServiceIfNeeded;
import static org.mariotaku.twidere.util.Utils.startUsageStatisticsServiceIfNeeded;
public class ConnectivityStateReceiver extends BroadcastReceiver implements Constants {
private static final String RECEIVER_LOGTAG = LOGTAG + "." + "Connectivity";

View File

@ -368,7 +368,12 @@ public class BackgroundOperationService extends IntentService implements Constan
}
mTwitter.removeSendingDraftId(draftId);
if (mPreferences.getBoolean(KEY_REFRESH_AFTER_TWEET, false)) {
mTwitter.refreshAll();
mHandler.post(new Runnable() {
@Override
public void run() {
mTwitter.refreshAll();
}
});
}
}
stopForeground(false);
@ -401,6 +406,7 @@ public class BackgroundOperationService extends IntentService implements Constan
final ContentLengthInputStream is = new ContentLengthInputStream(file);
is.setReadListener(new MessageMediaUploadListener(this, mNotificationManager, builder, text));
final MediaUploadResponse uploadResp = twitter.uploadMedia(file.getName(), is, o.outMimeType);
// final MediaUploadResponse uploadResp = twitter.uploadMediaBase64(is);
directMessage = new ParcelableDirectMessage(twitter.sendDirectMessage(recipientId, text,
uploadResp.getId()), accountId, true);
if (!file.delete()) {

View File

@ -19,17 +19,6 @@
package org.mariotaku.twidere.service;
import static org.mariotaku.twidere.util.ParseUtils.parseInt;
import static org.mariotaku.twidere.util.Utils.getAccountIds;
import static org.mariotaku.twidere.util.Utils.getDefaultAccountId;
import static org.mariotaku.twidere.util.Utils.getNewestMessageIdsFromDatabase;
import static org.mariotaku.twidere.util.Utils.getNewestStatusIdsFromDatabase;
import static org.mariotaku.twidere.util.Utils.hasAutoRefreshAccounts;
import static org.mariotaku.twidere.util.Utils.isBatteryOkay;
import static org.mariotaku.twidere.util.Utils.isDebugBuild;
import static org.mariotaku.twidere.util.Utils.isNetworkAvailable;
import static org.mariotaku.twidere.util.Utils.shouldStopAutoRefreshOnBatteryLow;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
@ -51,6 +40,17 @@ import org.mariotaku.twidere.util.SharedPreferencesWrapper;
import java.util.Arrays;
import static org.mariotaku.twidere.util.ParseUtils.parseInt;
import static org.mariotaku.twidere.util.Utils.getAccountIds;
import static org.mariotaku.twidere.util.Utils.getDefaultAccountId;
import static org.mariotaku.twidere.util.Utils.getNewestMessageIdsFromDatabase;
import static org.mariotaku.twidere.util.Utils.getNewestStatusIdsFromDatabase;
import static org.mariotaku.twidere.util.Utils.hasAutoRefreshAccounts;
import static org.mariotaku.twidere.util.Utils.isBatteryOkay;
import static org.mariotaku.twidere.util.Utils.isDebugBuild;
import static org.mariotaku.twidere.util.Utils.isNetworkAvailable;
import static org.mariotaku.twidere.util.Utils.shouldStopAutoRefreshOnBatteryLow;
public class RefreshService extends Service implements Constants {
private SharedPreferencesWrapper mPreferences;

View File

@ -22,26 +22,23 @@ package org.mariotaku.twidere.task;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.os.AsyncTask;
import com.twitter.Extractor;
import org.apache.commons.lang3.ArrayUtils;
import org.mariotaku.querybuilder.Expression;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.provider.TwidereDataStore.CachedHashtags;
import org.mariotaku.twidere.provider.TwidereDataStore.CachedStatuses;
import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers;
import org.mariotaku.twidere.provider.TwidereDataStore.Filters;
import org.mariotaku.twidere.util.AsyncTaskUtils;
import org.mariotaku.twidere.util.TwitterWrapper.TwitterListResponse;
import org.mariotaku.twidere.util.Utils;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import twitter4j.Relationship;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
import static org.mariotaku.twidere.util.ContentValuesCreator.createCachedUser;
@ -49,11 +46,12 @@ import static org.mariotaku.twidere.util.ContentValuesCreator.createStatus;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
public class CacheUsersStatusesTask extends TwidereAsyncTask<Void, Void, Void> implements Constants {
public class CacheUsersStatusesTask extends AsyncTask<Void, Void, Void> implements Constants {
private final TwitterListResponse<twitter4j.Status>[] responses;
private final Context context;
@SafeVarargs
public CacheUsersStatusesTask(final Context context, final TwitterListResponse<twitter4j.Status>... responses) {
this.context = context;
this.responses = responses;
@ -117,6 +115,7 @@ public class CacheUsersStatusesTask extends TwidereAsyncTask<Void, Void, Void> i
return null;
}
@SafeVarargs
public static Runnable getRunnable(final Context context,
final TwitterListResponse<twitter4j.Status>... all_statuses) {
return new ExecuteCacheUserStatusesTaskRunnable(context, all_statuses);
@ -126,6 +125,7 @@ public class CacheUsersStatusesTask extends TwidereAsyncTask<Void, Void, Void> i
final Context context;
final TwitterListResponse<twitter4j.Status>[] all_statuses;
@SafeVarargs
ExecuteCacheUserStatusesTaskRunnable(final Context context,
final TwitterListResponse<twitter4j.Status>... all_statuses) {
this.context = context;
@ -134,7 +134,7 @@ public class CacheUsersStatusesTask extends TwidereAsyncTask<Void, Void, Void> i
@Override
public void run() {
new CacheUsersStatusesTask(context, all_statuses).executeTask();
AsyncTaskUtils.executeTask(new CacheUsersStatusesTask(context, all_statuses));
}
}
}

View File

@ -20,6 +20,7 @@
package org.mariotaku.twidere.task;
import android.content.Context;
import android.os.AsyncTask;
import com.squareup.otto.Bus;
@ -28,7 +29,7 @@ import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.util.AsyncTaskManager;
import org.mariotaku.twidere.util.message.TaskStateChangedEvent;
public abstract class ManagedAsyncTask<Params, Progress, Result> extends TwidereAsyncTask<Params, Progress, Result> implements
public abstract class ManagedAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> implements
Constants {
private final AsyncTaskManager manager;
@ -40,7 +41,6 @@ public abstract class ManagedAsyncTask<Params, Progress, Result> extends Twidere
}
public ManagedAsyncTask(final Context context, final AsyncTaskManager manager, final String tag) {
super(manager.getHandler());
this.manager = manager;
this.context = context;
this.tag = tag;

View File

@ -1,176 +0,0 @@
/*
* Twidere - Twitter client for Android
*
* Copyright (C) 2012-2014 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.task;
import android.os.Handler;
import java.util.concurrent.ExecutorService;
public abstract class TwidereAsyncTask<Param, Progress, Result> {
private Thread mThread;
private final Handler mHandler;
private final ExecutorService mExecutor;
private final Runnable mRunnable;
private boolean mCancelled;
private Param[] mParams;
private Status mStatus = Status.PENDING;
public TwidereAsyncTask() {
this(new Handler(), null);
}
public TwidereAsyncTask(final ExecutorService executor) {
this(new Handler(), executor);
}
public TwidereAsyncTask(final Handler handler) {
this(handler, null);
}
public TwidereAsyncTask(final Handler handler, final ExecutorService executor) {
if (handler == null) throw new NullPointerException();
mHandler = handler;
mExecutor = executor;
mRunnable = new BackgroundRunnable();
}
public void cancel(final boolean mayInterruptIfRunning) {
mCancelled = true;
if (mExecutor == null && mThread != null) {
mThread.interrupt();
}
onCancelled();
mStatus = Status.FINISHED;
}
public TwidereAsyncTask<Param, Progress, Result> executeTask(final Param... params) {
switch (mStatus) {
case RUNNING:
throw new IllegalStateException("Cannot execute task:" + " the task is already running.");
case FINISHED:
throw new IllegalStateException("Cannot execute task:" + " the task has already been executed "
+ "(a task can be executed only once)");
default:
break;
}
mStatus = Status.RUNNING;
mHandler.post(new Runnable() {
@Override
public void run() {
onPreExecute();
mParams = params;
if (mExecutor != null) {
mExecutor.execute(mRunnable);
} else {
mThread = new Thread(mRunnable);
mThread.start();
}
}
});
return this;
}
public Status getStatus() {
return mStatus;
}
public boolean isCancelled() {
return mCancelled;
}
protected abstract Result doInBackground(Param... params);
protected void onCancelled() {
}
protected void onCancelled(final Result result) {
}
protected void onPostExecute(final Result result) {
}
protected void onPreExecute() {
}
protected void onProgressUpdate(final Progress... values) {
}
protected final void publishProgress(final Progress... progress) {
if (isCancelled()) return;
mHandler.post(new OnProgressUpdateRunnable(progress));
}
public enum Status {
RUNNING, PENDING, FINISHED
}
private final class BackgroundRunnable implements Runnable {
@Override
public void run() {
final Result result = doInBackground(mParams);
mHandler.post(new OnPostExecuteRunnable(result));
}
}
private final class OnPostExecuteRunnable implements Runnable {
private final Result mResult;
private OnPostExecuteRunnable(final Result result) {
mResult = result;
}
@Override
public void run() {
mStatus = Status.FINISHED;
if (isCancelled()) {
onCancelled(mResult);
} else {
onPostExecute(mResult);
}
}
}
private final class OnProgressUpdateRunnable implements Runnable {
private final Progress[] mResult;
private OnProgressUpdateRunnable(final Progress... result) {
mResult = result;
}
@Override
public void run() {
if (isCancelled()) return;
onProgressUpdate(mResult);
}
}
}

View File

@ -19,10 +19,10 @@
package org.mariotaku.twidere.util;
import android.os.AsyncTask;
import android.os.Handler;
import org.mariotaku.twidere.task.ManagedAsyncTask;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
@ -84,7 +84,7 @@ public final class AsyncTaskManager {
public final <T> boolean execute(final int hashCode, final T... params) {
final ManagedAsyncTask<T, ?, ?> task = (ManagedAsyncTask<T, ?, ?>) findTask(hashCode);
if (task != null) {
task.executeTask(params);
task.executeOnExecutor(mExecutor, params);
return true;
}
return false;
@ -108,7 +108,7 @@ public final class AsyncTaskManager {
public boolean hasRunningTasksForTag(final String tag) {
if (tag == null) return false;
for (final ManagedAsyncTask<?, ?, ?> task : getTaskSpecList()) {
if (task.getStatus() == ManagedAsyncTask.Status.RUNNING && tag.equals(task.getTag()))
if (task.getStatus() == AsyncTask.Status.RUNNING && tag.equals(task.getTag()))
return true;
}
return false;
@ -116,7 +116,7 @@ public final class AsyncTaskManager {
public boolean isExecuting(final int hashCode) {
final ManagedAsyncTask<?, ?, ?> task = findTask(hashCode);
if (task != null && task.getStatus() == TwidereAsyncTask.Status.RUNNING) return true;
if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) return true;
return false;
}

View File

@ -0,0 +1,44 @@
/*
* 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;
import android.os.AsyncTask;
import android.support.annotation.Nullable;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
/**
* Created by mariotaku on 15/3/30.
*/
public class AsyncTaskUtils {
public static final Executor DEFAULT_EXECUTOR = Executors.newFixedThreadPool(2);
@SafeVarargs
public static <T extends AsyncTask<Parameter, ?, ?>, Parameter> T executeTask(T task, Parameter... params) {
task.executeOnExecutor(DEFAULT_EXECUTOR, params);
return task;
}
public static boolean isTaskRunning(@Nullable AsyncTask task) {
return task != null && task.getStatus() == AsyncTask.Status.RUNNING;
}
}

View File

@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.util.LongSparseArray;
@ -62,7 +63,6 @@ import org.mariotaku.twidere.provider.TwidereDataStore.SavedSearches;
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses;
import org.mariotaku.twidere.service.BackgroundOperationService;
import org.mariotaku.twidere.task.ManagedAsyncTask;
import org.mariotaku.twidere.task.TwidereAsyncTask;
import org.mariotaku.twidere.util.collection.LongSparseMap;
import org.mariotaku.twidere.util.content.ContentResolverUtils;
import org.mariotaku.twidere.util.message.FavoriteCreatedEvent;
@ -173,12 +173,12 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
public void clearNotificationAsync(final int notificationId, final long notificationAccount) {
final ClearNotificationTask task = new ClearNotificationTask(notificationId, notificationAccount);
task.executeTask();
AsyncTaskUtils.executeTask(task);
}
public void clearUnreadCountAsync(final int position) {
final ClearUnreadCountTask task = new ClearUnreadCountTask(position);
task.executeTask();
AsyncTaskUtils.executeTask(task);
}
public int createBlockAsync(final long accountId, final long user_id) {
@ -346,7 +346,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
for (final ManagedAsyncTask<?, ?, ?> task : mAsyncTaskManager.getTaskSpecList()) {
if (task instanceof CreateFriendshipTask) {
final CreateFriendshipTask createFriendshipTask = (CreateFriendshipTask) task;
if (createFriendshipTask.getStatus() == TwidereAsyncTask.Status.RUNNING
if (createFriendshipTask.getStatus() == AsyncTask.Status.RUNNING
&& createFriendshipTask.getAccountId() == accountId
&& createFriendshipTask.getUserId() == userId)
return true;
@ -367,7 +367,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
for (final ManagedAsyncTask<?, ?, ?> task : mAsyncTaskManager.getTaskSpecList()) {
if (task instanceof DestroyFriendshipTask) {
final DestroyFriendshipTask destroyFriendshipTask = (DestroyFriendshipTask) task;
if (destroyFriendshipTask.getStatus() == TwidereAsyncTask.Status.RUNNING
if (destroyFriendshipTask.getStatus() == AsyncTask.Status.RUNNING
&& destroyFriendshipTask.getAccountId() == accountId
&& destroyFriendshipTask.getUserId() == userId)
return true;
@ -435,7 +435,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
public void removeUnreadCountsAsync(final int position, final LongSparseArray<Set<Long>> counts) {
final RemoveUnreadCountsTask task = new RemoveUnreadCountsTask(position, counts);
task.executeTask();
AsyncTaskUtils.executeTask(task);
}
public int reportMultiSpam(final long accountId, final long[] user_ids) {
@ -784,7 +784,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
}
final class ClearNotificationTask extends TwidereAsyncTask<Void, Void, Integer> {
final class ClearNotificationTask extends AsyncTask<Void, Void, Integer> {
private final int notificationType;
private final long accountId;
@ -800,7 +800,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
}
final class ClearUnreadCountTask extends TwidereAsyncTask<Void, Void, Integer> {
final class ClearUnreadCountTask extends AsyncTask<Void, Void, Integer> {
private final int position;
ClearUnreadCountTask(final int position) {
@ -2166,7 +2166,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper {
}
final class RemoveUnreadCountsTask extends TwidereAsyncTask<Void, Void, Integer> {
final class RemoveUnreadCountsTask extends AsyncTask<Void, Void, Integer> {
private final int position;
private final LongSparseArray<Set<Long>> counts;

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.util;
import static org.mariotaku.twidere.annotation.Preference.Type.INVALID;
import android.content.Context;
import android.content.SharedPreferences;
@ -45,6 +43,8 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import static org.mariotaku.twidere.annotation.Preference.Type.INVALID;
public class DataImportExportUtils implements Constants {
public static void exportData(final Context context, final File dst, final int flags) throws IOException {

View File

@ -30,7 +30,6 @@ import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.util.imageloader.AccountExtra;
import org.mariotaku.twidere.util.imageloader.OvalBitmapDisplayer;

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.util;
import static android.text.TextUtils.isEmpty;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
@ -33,6 +31,8 @@ import org.mariotaku.twidere.Constants;
import java.util.HashMap;
import java.util.Map;
import static android.text.TextUtils.isEmpty;
public class PermissionsManager implements Constants {
private static final String[] PERMISSIONS_DENIED = { PERMISSION_DENIED };

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.util;
import static org.mariotaku.twidere.util.ServiceUtils.bindToService;
import android.app.Application;
import android.content.ComponentName;
import android.content.Context;
@ -34,6 +32,8 @@ import org.mariotaku.twidere.IStatusShortener;
import org.mariotaku.twidere.model.ParcelableStatusUpdate;
import org.mariotaku.twidere.model.StatusShortenResult;
import static org.mariotaku.twidere.util.ServiceUtils.bindToService;
public final class StatusShortenerInterface implements Constants, IStatusShortener {
private IStatusShortener mShortener;

View File

@ -398,6 +398,7 @@ public final class Utils implements Constants, TwitterConstants {
HOME_TABS_URI_MATCHER.addURI(AUTHORITY_DIRECT_MESSAGES, null, CustomTabUtils.TAB_CODE_DIRECT_MESSAGES);
}
private static LongSparseArray<Integer> sAccountColors = new LongSparseArray<>();
private static LongSparseArray<String> sAccountScreenNames = new LongSparseArray<>();
private static LongSparseArray<String> sAccountNames = new LongSparseArray<>();

View File

@ -20,7 +20,6 @@
package org.mariotaku.twidere.util;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.nostra13.universalimageloader.cache.disc.DiskCache;

View File

@ -19,13 +19,6 @@
package org.mariotaku.twidere.util.imageloader;
import static org.mariotaku.twidere.util.TwidereLinkify.PATTERN_TWITTER_PROFILE_IMAGES;
import static org.mariotaku.twidere.util.Utils.getImageLoaderHttpClient;
import static org.mariotaku.twidere.util.Utils.getNormalTwitterProfileImage;
import static org.mariotaku.twidere.util.Utils.getRedirectedHttpResponse;
import static org.mariotaku.twidere.util.Utils.getTwitterAuthorization;
import static org.mariotaku.twidere.util.Utils.getTwitterProfileImageOfSize;
import android.content.Context;
import android.net.Uri;
import android.text.TextUtils;
@ -41,14 +34,21 @@ import org.mariotaku.twidere.model.ParcelableMedia;
import org.mariotaku.twidere.util.MediaPreviewUtils;
import org.mariotaku.twidere.util.Utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import twitter4j.TwitterException;
import twitter4j.auth.Authorization;
import twitter4j.http.HttpClientWrapper;
import twitter4j.http.HttpResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import static org.mariotaku.twidere.util.TwidereLinkify.PATTERN_TWITTER_PROFILE_IMAGES;
import static org.mariotaku.twidere.util.Utils.getImageLoaderHttpClient;
import static org.mariotaku.twidere.util.Utils.getNormalTwitterProfileImage;
import static org.mariotaku.twidere.util.Utils.getRedirectedHttpResponse;
import static org.mariotaku.twidere.util.Utils.getTwitterAuthorization;
import static org.mariotaku.twidere.util.Utils.getTwitterProfileImageOfSize;
public class TwidereImageDownloader extends BaseImageDownloader implements Constants {

View File

@ -141,6 +141,7 @@ public class OkHttpClientImpl implements HttpClient, TwidereConstants {
return RequestBody.create(APPLICATION_FORM_URLENCODED, HttpParameter.encodeParameters(params));
}
final MultipartBuilder builder = new MultipartBuilder();
builder.type(MultipartBuilder.FORM);
for (final HttpParameter param : params) {
if (param.isFile()) {
RequestBody requestBody;

View File

@ -19,18 +19,13 @@
package org.mariotaku.twidere.view;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v7.app.ActionBarActivity;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.Window;
import android.widget.FrameLayout;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.view.iface.IExtendedView;
public class ExtendedFrameLayout extends FrameLayout implements IExtendedView {