Add ref watching to postlinkable

I hope I'm doing this right
filtering
Floens 10 years ago
parent 784272e9e7
commit 24f4e4d833
  1. 8
      Clover/app/src/main/java/org/floens/chan/ChanApplication.java
  2. 22
      Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadListLayout.java

@ -27,6 +27,7 @@ import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley; import com.android.volley.toolbox.Volley;
import com.squareup.leakcanary.LeakCanary; import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import org.floens.chan.chan.ChanUrls; import org.floens.chan.chan.ChanUrls;
import org.floens.chan.core.manager.BoardManager; import org.floens.chan.core.manager.BoardManager;
@ -64,6 +65,7 @@ public class ChanApplication extends Application {
private static ReplyManager replyManager; private static ReplyManager replyManager;
private static DatabaseManager databaseManager; private static DatabaseManager databaseManager;
private static FileCache fileCache; private static FileCache fileCache;
private static RefWatcher refWatcher;
private String userAgent; private String userAgent;
private int activityForegroundCounter = 0; private int activityForegroundCounter = 0;
@ -105,10 +107,13 @@ public class ChanApplication extends Application {
return fileCache; return fileCache;
} }
public static RefWatcher getRefWatcher() {
return refWatcher;
}
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
LeakCanary.install(this);
// Force the overflow button to show, even on devices that have a // Force the overflow button to show, even on devices that have a
// physical button. // physical button.
@ -123,6 +128,7 @@ public class ChanApplication extends Application {
} }
if (ChanBuild.DEVELOPER_MODE) { if (ChanBuild.DEVELOPER_MODE) {
refWatcher = LeakCanary.install(this);
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
} }

@ -21,15 +21,22 @@ import android.content.Context;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.SpannedString;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; 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.R;
import org.floens.chan.core.model.ChanThread; 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.Post;
import org.floens.chan.core.model.PostImage; 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.adapter.PostAdapter;
import org.floens.chan.ui.cell.ThreadStatusCell; import org.floens.chan.ui.cell.ThreadStatusCell;
import org.floens.chan.ui.view.PostView; import org.floens.chan.ui.view.PostView;
@ -127,6 +134,21 @@ public class ThreadListLayout extends LinearLayout {
} }
public void cleanup() { 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(); postAdapter.cleanup();
showingThread = null; showingThread = null;
} }

Loading…
Cancel
Save