Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ca1da8c authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am ff3673c7: Make running services initial update async.

Merge commit 'ff3673c7' into gingerbread-plus-aosp

* commit 'ff3673c7':
  Make running services initial update async.
parents 343158c7 ff3673c7
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -38,4 +38,23 @@
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    <LinearLayout android:id="@+id/loading_container"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone"
            android:gravity="center">

        <ProgressBar style="?android:attr/progressBarStyleLarge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:text="@string/settings_safetylegal_activity_loading"
                android:paddingTop="4dip"
                android:singleLine="true" />

    </LinearLayout>

</FrameLayout>
 No newline at end of file
+28 −2
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
@@ -92,6 +93,8 @@ public class ManageApplications extends TabActivity implements
    
    private String mCurrentPkgName;
    
    private View mLoadingContainer;

    private View mListContainer;

    // ListView used to display list
@@ -107,6 +110,12 @@ public class ManageApplications extends TabActivity implements
    private boolean mActivityResumed;
    private Object mNonConfigInstance;
    
    final Runnable mRunningProcessesAvail = new Runnable() {
        public void run() {
            handleRunningProcessesAvail();
        }
    };

    // View Holder used when displaying views
    static class AppViewHolder {
        ApplicationsState.AppEntry entry;
@@ -405,6 +414,7 @@ public class ManageApplications extends TabActivity implements
        // initialize the inflater
        mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mRootView = mInflater.inflate(R.layout.manage_applications, null);
        mLoadingContainer = mRootView.findViewById(R.id.loading_container);
        mListContainer = mRootView.findViewById(R.id.list_container);
        // Create adapter and list view here
        ListView lv = (ListView) mListContainer.findViewById(android.R.id.list);
@@ -561,19 +571,35 @@ public class ManageApplications extends TabActivity implements
                mRunningProcessesView.doCreate(null, mNonConfigInstance);
                mCreatedRunning = true;
            }
            boolean haveData = true;
            if (mActivityResumed && !mResumedRunning) {
                mRunningProcessesView.doResume();
                haveData = mRunningProcessesView.doResume(mRunningProcessesAvail);
                mResumedRunning = true;
            }
            mApplicationsAdapter.pause();
            if (mCurView != which) {
                if (haveData) {
                    mRunningProcessesView.setVisibility(View.VISIBLE);
                } else {
                    mLoadingContainer.setVisibility(View.VISIBLE);
                }
                mListContainer.setVisibility(View.GONE);
            }
        }
        mCurView = which;
    }

    void handleRunningProcessesAvail() {
        if (mCurView == VIEW_RUNNING) {
            mLoadingContainer.startAnimation(AnimationUtils.loadAnimation(
                    this, android.R.anim.fade_out));
            mRunningProcessesView.startAnimation(AnimationUtils.loadAnimation(
                    this, android.R.anim.fade_in));
            mRunningProcessesView.setVisibility(View.VISIBLE);
            mLoadingContainer.setVisibility(View.GONE);
        }
    }

    public void showCurrentTab() {
        String tabId = getTabHost().getCurrentTabTag();
        int newOption;
+12 −1
Original line number Diff line number Diff line
@@ -64,6 +64,8 @@ public class RunningProcessesView extends FrameLayout
    
    RunningState mState;
    
    Runnable mDataAvail;

    StringBuilder mBuilder = new StringBuilder(128);
    
    RunningState.BaseItem mCurSelected;
@@ -390,6 +392,11 @@ public class RunningProcessesView extends FrameLayout
            adapter.notifyDataSetChanged();
        }
        
        if (mDataAvail != null) {
            mDataAvail.run();
            mDataAvail = null;
        }

        // This is the amount of available memory until we start killing
        // background services.
        long availMem = readAvailMem() - SECONDARY_SERVER_MEM;
@@ -475,15 +482,19 @@ public class RunningProcessesView extends FrameLayout
    
    public void doPause() {
        mState.pause();
        mDataAvail = null;
    }

    public void doResume() {
    public boolean doResume(Runnable dataAvail) {
        mState.resume(this);
        if (mState.hasData()) {
            // If the state already has its data, then let's populate our
            // list right now to avoid flicker.
            refreshUi(true);
            return true;
        }
        mDataAvail = dataAvail;
        return false;
    }

    public Object doRetainNonConfigurationInstance() {
+3 −7
Original line number Diff line number Diff line
@@ -392,16 +392,12 @@ public class PowerUsageSummary extends PreferenceActivity implements Runnable {
            for (Map.Entry<String, ? extends BatteryStats.Uid.Wakelock> wakelockEntry
                    : wakelockStats.entrySet()) {
                Uid.Wakelock wakelock = wakelockEntry.getValue();
                BatteryStats.Timer timer = wakelock.getWakeTime(BatteryStats.WAKE_TYPE_FULL);
                // Only care about partial wake locks since full wake locks
                // are canceled when the user turns the screen off.
                BatteryStats.Timer timer = wakelock.getWakeTime(BatteryStats.WAKE_TYPE_PARTIAL);
                if (timer != null) {
                    wakelockTime += timer.getTotalTimeLocked(uSecTime, which);
                }
                timer = wakelock.getWakeTime(BatteryStats.WAKE_TYPE_PARTIAL);
                if (timer != null) {
                    wakelockTime += timer.getTotalTimeLocked(uSecTime, which);
                }
                // Note: not considering window, since that is just the system
                // keeping the screen on while the app is running.
            }
            wakelockTime /= 1000; // convert to millis