From 37e89c99dd97fe6d6e5b0ba4a97039e36731d075 Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Wed, 21 Apr 2021 17:08:44 -0700 Subject: [PATCH] Simplify navigation in BatteryStatsViewer Bug: 185952656 Test: mp :BatteryStatsViewer && adb shell am start -n com.android.frameworks.core.batterystatsviewer/.BatteryConsumerPickerActivity Change-Id: I5c8958411c2436a0d1e8fafb79759b9e40d81b18 --- .../BatteryStatsViewer/AndroidManifest.xml | 9 ++-- .../BatteryConsumerPickerActivity.java | 46 +++++++------------ .../BatteryStatsViewerActivity.java | 44 ++++-------------- 3 files changed, 30 insertions(+), 69 deletions(-) diff --git a/core/tests/batterystatstests/BatteryStatsViewer/AndroidManifest.xml b/core/tests/batterystatstests/BatteryStatsViewer/AndroidManifest.xml index d49ab57dc1dff..52a77a7862a1d 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/AndroidManifest.xml +++ b/core/tests/batterystatstests/BatteryStatsViewer/AndroidManifest.xml @@ -25,8 +25,7 @@ - @@ -36,7 +35,9 @@ - + diff --git a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java index 2db848b084a6f..63a15d6c63b47 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java +++ b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java @@ -20,9 +20,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import androidx.activity.result.contract.ActivityResultContract; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentStatePagerAdapter; @@ -32,31 +30,14 @@ import com.google.android.material.tabs.TabLayout; /** * Picker, showing a sorted lists of applications and other types of entities consuming power. - * Returns the selected entity ID or null. + * Opens BatteryStatsViewerActivity upon item selection. */ public class BatteryConsumerPickerActivity extends FragmentActivity { - - public static final ActivityResultContract CONTRACT = - new ActivityResultContract() { - @NonNull - @Override - public Intent createIntent(@NonNull Context context, Void aVoid) { - return new Intent(context, BatteryConsumerPickerActivity.class); - } - - @Override - public String parseResult(int resultCode, @Nullable Intent intent) { - if (resultCode != RESULT_OK || intent == null) { - return null; - } - return intent.getStringExtra(Intent.EXTRA_RETURN_RESULT); - } - }; + private static final String PREF_SELECTED_BATTERY_CONSUMER = "batteryConsumerId"; @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); - getActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.battery_consumer_picker_activity_layout); @@ -99,18 +80,25 @@ public class BatteryConsumerPickerActivity extends FragmentActivity { viewPager.setAdapter(adapter); TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); + if (icicle == null) { + final String batteryConsumerId = getPreferences(Context.MODE_PRIVATE) + .getString(PREF_SELECTED_BATTERY_CONSUMER, null); + if (batteryConsumerId != null) { + startBatteryStatsActivity(batteryConsumerId); + } + } } public void setSelectedBatteryConsumer(String batteryConsumerId) { - Intent intent = new Intent(); - intent.putExtra(Intent.EXTRA_RETURN_RESULT, batteryConsumerId); - setResult(RESULT_OK, intent); - finish(); + getPreferences(Context.MODE_PRIVATE).edit() + .putString(PREF_SELECTED_BATTERY_CONSUMER, batteryConsumerId) + .apply(); + startBatteryStatsActivity(batteryConsumerId); } - @Override - public boolean onNavigateUp() { - onBackPressed(); - return true; + private void startBatteryStatsActivity(String batteryConsumerId) { + final Intent intent = new Intent(this, BatteryStatsViewerActivity.class) + .putExtra(BatteryStatsViewerActivity.EXTRA_BATTERY_CONSUMER, batteryConsumerId); + startActivity(intent); } } diff --git a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java index 74d3fb336f407..03dde04519cef 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java +++ b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java @@ -17,7 +17,6 @@ package com.android.frameworks.core.batterystatsviewer; import android.content.Context; -import android.content.SharedPreferences; import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; @@ -27,9 +26,9 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import androidx.activity.ComponentActivity; -import androidx.activity.result.ActivityResultLauncher; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.loader.app.LoaderManager; @@ -45,14 +44,14 @@ import java.util.List; import java.util.Locale; public class BatteryStatsViewerActivity extends ComponentActivity { + public static final String EXTRA_BATTERY_CONSUMER = "batteryConsumerId"; + private static final int BATTERY_STATS_REFRESH_RATE_MILLIS = 60 * 1000; private static final int MILLIS_IN_MINUTE = 60000; - private static final String PREF_SELECTED_BATTERY_CONSUMER = "batteryConsumerId"; private static final int LOADER_BATTERY_USAGE_STATS = 1; private BatteryStatsDataAdapter mBatteryStatsDataAdapter; private final Runnable mBatteryStatsRefresh = this::periodicBatteryStatsRefresh; - private SharedPreferences mSharedPref; private String mBatteryConsumerId; private TextView mTitleView; private TextView mDetailsView; @@ -62,21 +61,16 @@ public class BatteryStatsViewerActivity extends ComponentActivity { private RecyclerView mBatteryConsumerDataView; private View mLoadingView; private View mEmptyView; - private final ActivityResultLauncher mStartAppPicker = registerForActivityResult( - BatteryConsumerPickerActivity.CONTRACT, this::onApplicationSelected); private List mBatteryUsageStats; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mSharedPref = getPreferences(Context.MODE_PRIVATE); + mBatteryConsumerId = getIntent().getStringExtra(EXTRA_BATTERY_CONSUMER); setContentView(R.layout.battery_stats_viewer_layout); - View appCard = findViewById(R.id.app_card); - appCard.setOnClickListener((e) -> startAppPicker()); - mTitleView = findViewById(android.R.id.title); mDetailsView = findViewById(R.id.details); mIconView = findViewById(android.R.id.icon); @@ -91,11 +85,7 @@ public class BatteryStatsViewerActivity extends ComponentActivity { mLoadingView = findViewById(R.id.loading_view); mEmptyView = findViewById(R.id.empty_view); - mBatteryConsumerId = mSharedPref.getString(PREF_SELECTED_BATTERY_CONSUMER, null); loadBatteryStats(); - if (mBatteryConsumerId == null) { - startAppPicker(); - } } @Override @@ -110,25 +100,6 @@ public class BatteryStatsViewerActivity extends ComponentActivity { getMainThreadHandler().removeCallbacks(mBatteryStatsRefresh); } - private void startAppPicker() { - mStartAppPicker.launch(null); - } - - private void onApplicationSelected(String batteryConsumerId) { - if (batteryConsumerId == null) { - if (mBatteryConsumerId == null) { - finish(); - } - } else { - mBatteryConsumerId = batteryConsumerId; - mSharedPref.edit() - .putString(PREF_SELECTED_BATTERY_CONSUMER, mBatteryConsumerId) - .apply(); - mLoadingView.setVisibility(View.VISIBLE); - loadBatteryStats(); - } - } - private void periodicBatteryStatsRefresh() { loadBatteryStats(); getMainThreadHandler().postDelayed(mBatteryStatsRefresh, BATTERY_STATS_REFRESH_RATE_MILLIS); @@ -200,9 +171,10 @@ public class BatteryStatsViewerActivity extends ComponentActivity { BatteryConsumerInfoHelper.BatteryConsumerInfo batteryConsumerInfo = batteryConsumerData.getBatteryConsumerInfo(); if (batteryConsumerInfo == null) { - mTitleView.setText("Battery consumer not found"); - mPackagesView.setVisibility(View.GONE); - mHeadingsView.setVisibility(View.GONE); + Toast.makeText(this, "Battery consumer not found: " + mBatteryConsumerId, + Toast.LENGTH_SHORT).show(); + finish(); + return; } else { mTitleView.setText(batteryConsumerInfo.label); if (batteryConsumerInfo.details != null) {