summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorfupduck <fupduck@riseup.net>2018-01-19 08:42:32 -0800
committerfupduck <fupduck@riseup.net>2018-01-19 08:42:32 -0800
commitdbda5fbf23ccad615e932be6b8869fe34a6b440d (patch)
tree4579483020300b393895248e06395a6d22fd3579 /app/src/main/java
parent7d4129b2854e25c42b6df766d30671c91fc699ae (diff)
parentf7dfa7bc000b802570dddc19e8f274193e25b336 (diff)
Merge branch '#8822_add_leakCanary_to_project' into '0.9.8'
#8822 adds leakCanary library to Bitmask for analyzing memory leaks See merge request leap/bitmask_android!27
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java26
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java7
2 files changed, 32 insertions, 1 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java b/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java
index 88a01b62..f9e45b79 100644
--- a/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java
+++ b/app/src/main/java/se/leap/bitmaskclient/BitmaskApp.java
@@ -1,6 +1,10 @@
package se.leap.bitmaskclient;
import android.app.Application;
+import android.content.Context;
+
+import com.squareup.leakcanary.LeakCanary;
+import com.squareup.leakcanary.RefWatcher;
/**
* Created by cyberta on 24.10.17.
@@ -8,11 +12,31 @@ import android.app.Application;
public class BitmaskApp extends Application {
+ private RefWatcher refWatcher;
+
@Override
public void onCreate() {
super.onCreate();
+ if (LeakCanary.isInAnalyzerProcess(this)) {
+ // This process is dedicated to LeakCanary for heap analysis.
+ // You should not init your app in this process.
+ return;
+ }
+ refWatcher = LeakCanary.install(this);
+ // Normal app init code...*/
PRNGFixes.apply();
- //TODO: add LeakCanary!
}
+ /**
+ * Use this method to get a RefWatcher object that checks for memory leaks in the given context.
+ * Call refWatcher.watch(this) to check if all references get garbage collected.
+ * @param context
+ * @return the RefWatcher object
+ */
+ public static RefWatcher getRefWatcher(Context context) {
+ BitmaskApp application = (BitmaskApp) context.getApplicationContext();
+ return application.refWatcher;
+ }
+
+
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
index 566134dd..84c407d7 100644
--- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
@@ -36,6 +36,7 @@ import se.leap.bitmaskclient.fragments.LogFragment;
import se.leap.bitmaskclient.userstatus.User;
import se.leap.bitmaskclient.userstatus.UserStatusFragment;
+import static se.leap.bitmaskclient.BitmaskApp.getRefWatcher;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_SWITCH_PROVIDER;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
@@ -287,6 +288,12 @@ public class NavigationDrawerFragment extends Fragment {
return super.onOptionsItemSelected(item);
}
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ getRefWatcher(getActivity()).watch(this);
+ }
+
/**
* Per the navigation drawer design guidelines, updates the action bar to show the global app
* 'context', rather than just what's in the current screen.