From 24f4e4d8336f75f134d7d8b66d07f91efcd60a1e Mon Sep 17 00:00:00 2001 From: Floens Date: Sun, 10 May 2015 13:11:30 +0200 Subject: [PATCH] Add ref watching to postlinkable I hope I'm doing this right --- .../java/org/floens/chan/ChanApplication.java | 8 ++++++- .../chan/ui/layout/ThreadListLayout.java | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ChanApplication.java b/Clover/app/src/main/java/org/floens/chan/ChanApplication.java index 8400bdd3..8898fb61 100644 --- a/Clover/app/src/main/java/org/floens/chan/ChanApplication.java +++ b/Clover/app/src/main/java/org/floens/chan/ChanApplication.java @@ -27,6 +27,7 @@ import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.Volley; import com.squareup.leakcanary.LeakCanary; +import com.squareup.leakcanary.RefWatcher; import org.floens.chan.chan.ChanUrls; import org.floens.chan.core.manager.BoardManager; @@ -64,6 +65,7 @@ public class ChanApplication extends Application { private static ReplyManager replyManager; private static DatabaseManager databaseManager; private static FileCache fileCache; + private static RefWatcher refWatcher; private String userAgent; private int activityForegroundCounter = 0; @@ -105,10 +107,13 @@ public class ChanApplication extends Application { return fileCache; } + public static RefWatcher getRefWatcher() { + return refWatcher; + } + @Override public void onCreate() { super.onCreate(); - LeakCanary.install(this); // Force the overflow button to show, even on devices that have a // physical button. @@ -123,6 +128,7 @@ public class ChanApplication extends Application { } if (ChanBuild.DEVELOPER_MODE) { + refWatcher = LeakCanary.install(this); StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build()); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadListLayout.java b/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadListLayout.java index d48add68..095d9874 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadListLayout.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadListLayout.java @@ -21,15 +21,22 @@ import android.content.Context; import android.os.Parcelable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.text.SpannedString; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; +import com.squareup.leakcanary.RefWatcher; + +import org.floens.chan.ChanApplication; +import org.floens.chan.ChanBuild; import org.floens.chan.R; import org.floens.chan.core.model.ChanThread; +import org.floens.chan.core.model.Pin; import org.floens.chan.core.model.Post; import org.floens.chan.core.model.PostImage; +import org.floens.chan.core.model.PostLinkable; import org.floens.chan.ui.adapter.PostAdapter; import org.floens.chan.ui.cell.ThreadStatusCell; import org.floens.chan.ui.view.PostView; @@ -127,6 +134,21 @@ public class ThreadListLayout extends LinearLayout { } public void cleanup() { + if (ChanBuild.DEVELOPER_MODE) { + Pin pin = ChanApplication.getWatchManager().findPinByLoadable(showingThread.loadable); + if (pin == null) { + for (Post post : showingThread.posts) { + if (post.comment instanceof SpannedString) { + SpannedString commentSpannable = (SpannedString) post.comment; + PostLinkable[] linkables = commentSpannable.getSpans(0, commentSpannable.length(), PostLinkable.class); + for (PostLinkable linkable : linkables) { + ChanApplication.getRefWatcher().watch(linkable, linkable.key + " " + linkable.value); + } + } + } + } + } + postAdapter.cleanup(); showingThread = null; }