aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <liangyuteng12345@gmail.com>2018-11-25 21:41:12 -0800
committerTrumeet <liangyuteng12345@gmail.com>2018-11-25 21:41:12 -0800
commit8ebfd80c76d11ead283d4148d4d393614e2033ac (patch)
tree2d28d36c0119d0eafc17a9d6b61d51ef827035a3
parent5a9c7a96b94369d6483233afc411be66f05b8de5 (diff)
downloadSysUIController-8ebfd80c76d11ead283d4148d4d393614e2033ac.tar
SysUIController-8ebfd80c76d11ead283d4148d4d393614e2033ac.tar.gz
SysUIController-8ebfd80c76d11ead283d4148d4d393614e2033ac.tar.bz2
SysUIController-8ebfd80c76d11ead283d4148d4d393614e2033ac.zip
feat: add Firebase Performance
-rw-r--r--app/build.gradle2
-rw-r--r--app/src/main/AndroidManifest.xml11
-rw-r--r--app/src/main/java/moe/yuuta/sysuicontroller/Main.java48
-rw-r--r--app/src/main/java/moe/yuuta/sysuicontroller/MainFragment.java20
-rw-r--r--build.gradle1
5 files changed, 25 insertions, 57 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 5a4ce5b..10b84fe 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,6 +3,7 @@ apply plugin: "androidx.navigation.safeargs"
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
+apply plugin: 'com.google.firebase.firebase-perf'
android {
compileSdkVersion 28
@@ -46,5 +47,6 @@ dependencies {
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.6'
implementation "android.arch.work:work-runtime:1.0.0-alpha11"
implementation 'com.google.android.gms:play-services-oss-licenses:16.0.1'
+ implementation 'com.google.firebase:firebase-perf:16.2.0'
compileOnly project(':hiddenapi')
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed9c59a..08bcb9b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -30,17 +30,6 @@
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
- <provider
- android:name="com.google.firebase.provider.FirebaseInitProvider"
- android:authorities="${applicationId}.firebaseinitprovider"
- tools:node="remove"
- android:exported="false" />
- <provider
- android:name="androidx.work.impl.WorkManagerInitializer"
- android:authorities="${applicationId}.workmanager-init"
- android:exported="false"
- android:multiprocess="true"
- tools:node="remove"/>
</application>
</manifest> \ No newline at end of file
diff --git a/app/src/main/java/moe/yuuta/sysuicontroller/Main.java b/app/src/main/java/moe/yuuta/sysuicontroller/Main.java
index 100ff9a..89a9786 100644
--- a/app/src/main/java/moe/yuuta/sysuicontroller/Main.java
+++ b/app/src/main/java/moe/yuuta/sysuicontroller/Main.java
@@ -1,14 +1,8 @@
package moe.yuuta.sysuicontroller;
-import android.app.Activity;
import android.app.Application;
-import android.os.Bundle;
-import com.google.firebase.FirebaseApp;
-import com.google.firebase.analytics.FirebaseAnalytics;
-
-import androidx.work.Configuration;
-import androidx.work.WorkManager;
+import com.google.firebase.perf.FirebasePerformance;
public class Main extends Application {
public static final String GLOBAL_TAG = "SysUIController";
@@ -16,44 +10,6 @@ public class Main extends Application {
@Override
public void onCreate() {
super.onCreate();
- registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
- @Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- unregisterActivityLifecycleCallbacks(this);
- FirebaseApp.initializeApp(activity);
- FirebaseAnalytics.getInstance(activity);
- WorkManager.initialize(activity, new Configuration.Builder().build());
- }
-
- @Override
- public void onActivityStarted(Activity activity) {
-
- }
-
- @Override
- public void onActivityResumed(Activity activity) {
-
- }
-
- @Override
- public void onActivityPaused(Activity activity) {
-
- }
-
- @Override
- public void onActivityStopped(Activity activity) {
-
- }
-
- @Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
-
- }
-
- @Override
- public void onActivityDestroyed(Activity activity) {
-
- }
- });
+ FirebasePerformance.getInstance().setPerformanceCollectionEnabled(!BuildConfig.DEBUG);
}
}
diff --git a/app/src/main/java/moe/yuuta/sysuicontroller/MainFragment.java b/app/src/main/java/moe/yuuta/sysuicontroller/MainFragment.java
index fd6aecb..4538c76 100644
--- a/app/src/main/java/moe/yuuta/sysuicontroller/MainFragment.java
+++ b/app/src/main/java/moe/yuuta/sysuicontroller/MainFragment.java
@@ -17,6 +17,9 @@ import android.view.MenuItem;
import android.widget.Toast;
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity;
+import com.google.firebase.perf.FirebasePerformance;
+import com.google.firebase.perf.metrics.AddTrace;
+import com.google.firebase.perf.metrics.Trace;
import java.util.ArrayList;
import java.util.HashSet;
@@ -111,14 +114,22 @@ public class MainFragment extends PreferenceFragment implements Preference.OnPre
for (PreferenceGroup group : mGroupsShouldBeDisabledBeforeServer) {
group.setEnabled(enable);
}
+ Trace traceClear = FirebasePerformance.getInstance().newTrace("traceClear");
+ traceClear.start();
+ traceClear.putMetric("disable_map_size", mDisableMap.size());
+ traceClear.putMetric("disable2_map_size", mDisable2Map.size());
for (int i = 0; i < mDisableMap.size(); i ++) getPreferenceScreen().removePreference(mDisableMap.valueAt(i));
for (int i = 0; i < mDisable2Map.size(); i ++) getPreferenceScreen().removePreference(mDisable2Map.valueAt(i));
mDisable2Map.clear();
mDisableMap.clear();
+ traceClear.stop();
if (enable) {
try {
List<DisableItem> available = mService.getAvailableDisableItems();
Log.d(TAG, "Available disable items: " + available.toString());
+ Trace traceDisplayAvailableItems = FirebasePerformance.getInstance().newTrace("traceDisplayAvailableItems");
+ traceDisplayAvailableItems.start();
+ traceDisplayAvailableItems.putMetric("available_item_size", available.size());
Set<String /* Name (key) */> showedKeys = new HashSet<>(available.size());
for (DisableItem item : available) {
showedKeys.add(item.getKey().toLowerCase());
@@ -136,14 +147,21 @@ public class MainFragment extends PreferenceFragment implements Preference.OnPre
if (item.isDisable2()) mDisable2Map.put(item.getFlag(), preference);
mDisableMap.put(item.getFlag(), preference);
}
+ traceDisplayAvailableItems.stop();
// Disable not supported prebuilt preferences
+ Trace traceSetNotAvailableBatch = FirebasePerformance.getInstance().newTrace("traceSetNotAvailableBatch");
+ traceSetNotAvailableBatch.start();
+ traceSetNotAvailableBatch.putMetric("showed_keys", showedKeys.size());
Log.d(TAG, "Showed items: " + showedKeys.toString());
setNotAvailableBatch(showedKeys, getPreferenceScreen());
+ traceSetNotAvailableBatch.stop();
} catch (Exception e) {
Log.e(TAG, "Read available disable items", e);
}
SharedPreferences preferences = requireContext().getSharedPreferences("flags", Context.MODE_PRIVATE);
+ Trace traceUpdateUIDisabled = FirebasePerformance.getInstance().newTrace("traceUpdateUIDisabled");
+ traceUpdateUIDisabled.start();
try {
mService.disable(preferences.getInt("disable_flags", mService.getDisableNoneFlag(false)));
updateUIDisabled(false, mService.getDisableFlags());
@@ -157,6 +175,7 @@ public class MainFragment extends PreferenceFragment implements Preference.OnPre
} catch (RemoteException e) {
Log.e(TAG, "Receive disable2 flags", e);
}
+ traceUpdateUIDisabled.stop();
}
if (mStatusPreference != null) {
@@ -246,6 +265,7 @@ public class MainFragment extends PreferenceFragment implements Preference.OnPre
}
@Override
+ @AddTrace(name = "MainFragment#onCreatePreferences")
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.main_settings, rootKey);
mStatusPreference = findPreference("key_service_status");
diff --git a/build.gradle b/build.gradle
index 2fdcfaf..bbb81a9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,6 +14,7 @@ buildscript {
classpath 'com.google.gms:google-services:4.2.0'
classpath 'io.fabric.tools:gradle:1.26.1'
classpath 'com.google.android.gms:oss-licenses-plugin:0.9.4'
+ classpath 'com.google.firebase:firebase-plugins:1.1.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}