diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-05 09:35:33 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-05 09:35:33 +0900 |
commit | 0f5f7dbc8a0a0751b69ac733be0d90416fc5cb5d (patch) | |
tree | 2c74bb2e1e825105bed3d148bafb9b2b360632d8 /app/src | |
parent | 3f354954d142557a74ef47fe1e0c7442459abbc8 (diff) | |
download | SmileEssence-0f5f7dbc8a0a0751b69ac733be0d90416fc5cb5d.tar.gz |
unyap
Diffstat (limited to 'app/src')
15 files changed, 49 insertions, 75 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/Application.java b/app/src/main/java/net/lacolaco/smileessence/Application.java index 4ad94fb9..72af2630 100644 --- a/app/src/main/java/net/lacolaco/smileessence/Application.java +++ b/app/src/main/java/net/lacolaco/smileessence/Application.java @@ -28,6 +28,7 @@ import android.support.annotation.StringRes; import android.widget.Toast; import com.crashlytics.android.Crashlytics; import com.crashlytics.android.core.CrashlyticsCore; +import com.squareup.leakcanary.LeakCanary; import io.fabric.sdk.android.Fabric; import net.lacolaco.smileessence.data.Account; import net.lacolaco.smileessence.data.OrmaHolder; @@ -69,6 +70,11 @@ public class Application extends android.app.Application { @Override public void onCreate() { super.onCreate(); + if (LeakCanary.isInAnalyzerProcess(this)) { + return; + } + LeakCanary.install(this); + Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build()); OrmaHolder.initialize(this); diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java index 8ba37f71..4997f3f1 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java @@ -53,6 +53,8 @@ import net.lacolaco.smileessence.view.adapter.PageListAdapter; import net.lacolaco.smileessence.view.dialog.ConfirmDialogFragment; import net.lacolaco.smileessence.view.page.*; +import java.lang.reflect.Field; + public class MainActivity extends Activity implements ViewPager.OnPageChangeListener { public static final int REQUEST_GET_PICTURE_FROM_GALLERY = 11; private final UIObserverBundle currentUserBundle = new UIObserverBundle(); @@ -99,15 +101,11 @@ public class MainActivity extends Activity implements ViewPager.OnPageChangeList } } - public void openSearchPage() { - setSelectedPageIndex(pagerAdapter.getIndex(SearchFragment.class)); - } - public void openSearchPage(String query) { SearchFragment fragment = (SearchFragment) pagerAdapter.getCachedFragment(pagerAdapter.getIndex(SearchFragment.class)); if (fragment != null) { fragment.startSearch(query); - openSearchPage(); + setSelectedPageIndex(pagerAdapter.getIndex(SearchFragment.class)); } } @@ -115,14 +113,10 @@ public class MainActivity extends Activity implements ViewPager.OnPageChangeList UserListFragment fragment = (UserListFragment) pagerAdapter.getCachedFragment(pagerAdapter.getIndex(UserListFragment.class)); if (fragment != null) { fragment.startUserList(listFullName); - openUserListPage(); + setSelectedPageIndex(pagerAdapter.getIndex(UserListFragment.class)); } } - private void openUserListPage() { - setSelectedPageIndex(pagerAdapter.getIndex(UserListFragment.class)); - } - // ------------------------ OVERRIDE METHODS ------------------------ @Override @@ -250,9 +244,26 @@ public class MainActivity extends Activity implements ViewPager.OnPageChangeList super.onDestroy(); currentUserBundle.detachAll(); Crouton.cancelAllCroutons(); + // Workaround for LeakCanary + fixCroutonLeak(); Logger.debug("onDestroy"); } + private void fixCroutonLeak() { + try { + Class klass = Class.forName("de.keyboardsurfer.android.widget.crouton.DefaultAnimationsBuilder"); + Field slideInDownAnimation = klass.getDeclaredField("slideInDownAnimation"); + slideInDownAnimation.setAccessible(true); + slideInDownAnimation.set(null, null); + Field slideOutUpAnimation = klass.getDeclaredField("slideOutUpAnimation"); + slideOutUpAnimation.setAccessible(true); + slideOutUpAnimation.set(null, null); + } catch (Exception e) { + Logger.error("crouton fix error: " + e); + } + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); @@ -268,9 +279,6 @@ public class MainActivity extends Activity implements ViewPager.OnPageChangeList startActivity(intent); return true; } - case R.id.actionbar_post: - openPostPage(); - return true; case R.id.actionbar_setting: startActivity(new Intent(this, SettingActivity.class)); return true; @@ -280,11 +288,6 @@ public class MainActivity extends Activity implements ViewPager.OnPageChangeList case R.id.actionbar_aclog: IntentUtils.openUri(this, world.getAccount().getUser().getAclogTimelineURL()); return true; - case R.id.actionbar_report: - world.getPostState().beginTransaction() - .appendText(getString(R.string.text_message_to_author, BuildConfig.VERSION_NAME)) - .commitWithOpen(this); - return true; default: return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.java index 28d99ab6..af891fec 100644 --- a/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.java +++ b/app/src/main/java/net/lacolaco/smileessence/activity/ManageAccountsActivity.java @@ -227,7 +227,7 @@ public class ManageAccountsActivity extends Activity implements AdapterView.OnIt } Account account = getItem(position); NetworkImageView iconView = (NetworkImageView) convertView.findViewById(R.id.account_icon); - ImageCache.getInstance().setImageToView(account.getUser().getProfileImageUrlOriginal(), iconView); + iconView.setImageUrl(account.getUser().getProfileImageUrlOriginal(), ImageCache.getImageLoader()); TextView textView = (TextView) convertView.findViewById(R.id.account_text_view); String text = "@" + account.getUser().getScreenName(); diff --git a/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.java b/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.java index a0206db2..334ab5e7 100644 --- a/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.java +++ b/app/src/main/java/net/lacolaco/smileessence/data/ExtractionWord.java @@ -27,10 +27,7 @@ package net.lacolaco.smileessence.data; import com.github.gfx.android.orma.annotation.PrimaryKey; import com.github.gfx.android.orma.annotation.Table; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.regex.Pattern; @Table @@ -47,8 +44,8 @@ public class ExtractionWord { this.patternString = patternString; } - public static synchronized List<ExtractionWord> cached() { - return new ArrayList<>(cache); + public static synchronized Collection<ExtractionWord> cached() { + return cache; } public static synchronized void load() { diff --git a/app/src/main/java/net/lacolaco/smileessence/data/ImageCache.java b/app/src/main/java/net/lacolaco/smileessence/data/ImageCache.java index e7a31716..daa2a443 100644 --- a/app/src/main/java/net/lacolaco/smileessence/data/ImageCache.java +++ b/app/src/main/java/net/lacolaco/smileessence/data/ImageCache.java @@ -32,14 +32,9 @@ import com.android.volley.toolbox.*; import net.lacolaco.smileessence.Application; public class ImageCache { - - // ------------------------------ FIELDS ------------------------------ - private static ImageCache instance = new ImageCache(); private ImageLoader imageLoader; - // -------------------------- STATIC METHODS -------------------------- - private ImageCache() { int cacheSizeInBytes = 64 * 1024 * 1024; // 64MB Cache diskCache = new DiskBasedCache(Application.getInstance().getCacheDir(), cacheSizeInBytes); @@ -48,27 +43,14 @@ public class ImageCache { requestQueue.start(); } - public static ImageCache getInstance() { - return instance; - } - - // -------------------------- OTHER METHODS -------------------------- - - public void setImageToView(String imageURL, NetworkImageView view) { - view.setImageUrl(imageURL, imageLoader); - } + public static ImageLoader getImageLoader() { return instance.imageLoader; } private static class ImageLruCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> cache; - // -------------------------- STATIC METHODS -------------------------- - private ImageLruCache() { - long memoryBytes = Runtime.getRuntime().maxMemory(); - int maxCount = (int) (memoryBytes / (8 * 1024)); - cache = new LruCache<>(maxCount); + cache = new LruCache<>(4 * 1024 * 1024); // 4MB } - // --------------------- Interface ImageCache --------------------- @Override public Bitmap getBitmap(String url) { diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java index 5b19ee74..f2862151 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java @@ -3,12 +3,12 @@ package net.lacolaco.smileessence.entity; import net.lacolaco.smileessence.util.ListUtils; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; public class DirectMessage extends EntitySupport implements IdObject { - private static Map<Long, DirectMessage> storage = new ConcurrentHashMap<>(); + private static Map<Long, DirectMessage> storage = new HashMap<>(); private long id; private User sender; private User recipient; diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/SavedSearch.java b/app/src/main/java/net/lacolaco/smileessence/entity/SavedSearch.java index fcb87605..8fcd0acd 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/SavedSearch.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/SavedSearch.java @@ -1,10 +1,5 @@ package net.lacolaco.smileessence.entity; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - public class SavedSearch implements IdObject { private long id; private String query; @@ -18,6 +13,7 @@ public class SavedSearch implements IdObject { return new SavedSearch(obj.getId(), obj.getQuery()); } + @Override public long getId() { return id; } diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java index 4aa461fa..c79c58ef 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java @@ -11,7 +11,7 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class Tweet extends EntitySupport implements IdObject { - private static Map<Long, Tweet> storage = new ConcurrentHashMap<>(); + private static Map<Long, Tweet> storage = new HashMap<>(); private final long id; private User user; private String text; diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/User.java b/app/src/main/java/net/lacolaco/smileessence/entity/User.java index a460fff2..abc2c047 100644 --- a/app/src/main/java/net/lacolaco/smileessence/entity/User.java +++ b/app/src/main/java/net/lacolaco/smileessence/entity/User.java @@ -2,11 +2,11 @@ package net.lacolaco.smileessence.entity; import net.lacolaco.smileessence.util.UIObservable; +import java.util.HashMap; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -public class User extends UIObservable { - private static Map<Long, User> storage = new ConcurrentHashMap<>(); +public class User extends UIObservable implements IdObject { + private static Map<Long, User> storage = new HashMap<>(); private long id; private boolean isProtected; private String screenName; @@ -102,6 +102,7 @@ public class User extends UIObservable { } } + @Override public long getId() { return id; } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/Partials.java b/app/src/main/java/net/lacolaco/smileessence/view/Partials.java index bb14c11c..fc0e35cb 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/Partials.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/Partials.java @@ -100,7 +100,7 @@ public class Partials { NetworkImageView icon = (NetworkImageView) convertView.findViewById(R.id.imageview_status_icon); String iconUrl = tweet.getOriginalTweet().getUser().getProfileImageUrlOriginal(); - ImageCache.getInstance().setImageToView(iconUrl, icon); + icon.setImageUrl(iconUrl, ImageCache.getImageLoader()); icon.setOnClickListener(v -> onIconClick(tweet, activity)); TextView header = (TextView) convertView.findViewById(R.id.textview_status_header); @@ -202,7 +202,7 @@ public class Partials { NetworkImageView icon = (NetworkImageView) convertView.findViewById(R.id.imageview_status_icon); String iconUrl = directMessage.getSender().getProfileImageUrlOriginal(); - ImageCache.getInstance().setImageToView(iconUrl, icon); + icon.setImageUrl(iconUrl, ImageCache.getImageLoader()); icon.setOnClickListener(v -> { UserDetailDialogFragment dialogFragment = new UserDetailDialogFragment(); dialogFragment.setUserID(directMessage.getSender().getId()); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java index 2ce0386d..3f98cfaa 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/EventListAdapter.java @@ -108,7 +108,7 @@ public class EventListAdapter extends CustomListAdapter<Event> { private void updateViewUser(Event event, View convertedView) { NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon); String iconUrl = event.getSource().getProfileImageUrlOriginal(); - ImageCache.getInstance().setImageToView(iconUrl, icon); + icon.setImageUrl(iconUrl, ImageCache.getImageLoader()); TextView header = (TextView) convertedView.findViewById(R.id.textview_status_header); header.setText(event.getFormattedString()); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java index c2a53df9..9f8e5039 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java @@ -34,15 +34,16 @@ public class MessageListAdapter extends OrderedCustomListAdapter<DirectMessage> private final Activity activity; public MessageListAdapter(Activity activity) { + super(); this.activity = activity; } public long getLastID() { - return getItem(getCount() - 1).getId(); + return getCount() > 0 ? getItem(getCount() - 1).getId() : -1; } public long getTopID() { - return getItem(0).getId(); + return getCount() > 0 ? getItem(0).getId() : -1; } @Override diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java index 9e036d32..c8d62fa8 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java @@ -38,7 +38,6 @@ import android.widget.TextView; import com.android.volley.toolbox.NetworkImageView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; -import net.lacolaco.smileessence.Application; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.data.Account; @@ -261,7 +260,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements textViewName.setText(user.getName()); textViewScreenName.setText(user.getScreenName()); textViewProtected.setVisibility(user.isProtected() ? View.VISIBLE : View.GONE); - ImageCache.getInstance().setImageToView(user.getProfileImageUrlOriginal(), imageViewIcon); + imageViewIcon.setImageUrl(user.getProfileImageUrlOriginal(), ImageCache.getImageLoader()); } private void updateUserDataDetail() { @@ -284,7 +283,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements textViewFollowerCount.setText(String.valueOf(user.getFollowersCount())); textViewFavoriteCount.setText(String.valueOf(user.getFavoritesCount())); - ImageCache.getInstance().setImageToView(user.getProfileBannerUrl(), imageViewHeader); + imageViewHeader.setImageUrl(user.getProfileBannerUrl(), ImageCache.getImageLoader()); } private void initUserData() { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java index f0c54f6f..c8426383 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java @@ -195,7 +195,6 @@ public class PostFragment extends PageFragment implements TextWatcher, View.OnFo @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); - menu.removeItem(R.id.actionbar_post); SystemServiceHelper.showIM(getActivity(), editText); } diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml index 37458740..5990cedd 100644 --- a/app/src/main/res/menu/main.xml +++ b/app/src/main/res/menu/main.xml @@ -1,11 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item - android:id="@+id/actionbar_post" - android:title="@string/actionbar_post" - android:icon="@drawable/icon_edit" - android:showAsAction="ifRoom"/> - <item android:id="@+id/actionbar_setting" android:title="@string/actionbar_setting" android:icon="@drawable/icon_settings" @@ -19,9 +14,4 @@ android:title="@string/actionbar_aclog" android:icon="@drawable/icon_website" android:showAsAction="never"/> - <item - android:id="@+id/actionbar_report" - android:title="@string/actionbar_report" - android:icon="@drawable/icon_email" - android:showAsAction="never"/> </menu>
\ No newline at end of file |