115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2009 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.os; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229fc033083267d0c7f01e083400721b6cddb3a398Mark Brophyimport java.util.HashMap; 239fc033083267d0c7f01e083400721b6cddb3a398Mark Brophyimport java.util.Map; 249fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation of PkgUsageStats associated with an 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * application package. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PkgUsageStats implements Parcelable { 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String packageName; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int launchCount; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long usageTime; 349fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy public Map<String, Long> componentResumeTimes; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<PkgUsageStats> CREATOR 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<PkgUsageStats>() { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PkgUsageStats createFromParcel(Parcel in) { 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PkgUsageStats(in); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PkgUsageStats[] newArray(int size) { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PkgUsageStats[size]; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "PkgUsageStats{" 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + packageName + "}"; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy public PkgUsageStats(String pkgName, int count, long time, Map<String, Long> lastResumeTimes) { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = pkgName; 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project launchCount = count; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project usageTime = time; 579fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy componentResumeTimes = new HashMap<String, Long>(lastResumeTimes); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PkgUsageStats(Parcel source) { 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = source.readString(); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project launchCount = source.readInt(); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project usageTime = source.readLong(); 649fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy final int N = source.readInt(); 659fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy componentResumeTimes = new HashMap<String, Long>(N); 669fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy for (int i = 0; i < N; i++) { 679fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy String component = source.readString(); 689fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy long lastResumeTime = source.readLong(); 699fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy componentResumeTimes.put(component, lastResumeTime); 709fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PkgUsageStats(PkgUsageStats pStats) { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = pStats.packageName; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project launchCount = pStats.launchCount; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project usageTime = pStats.usageTime; 779fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy componentResumeTimes = new HashMap<String, Long>(pStats.componentResumeTimes); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy public void writeToParcel(Parcel dest, int parcelableFlags) { 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(packageName); 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(launchCount); 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(usageTime); 889fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy dest.writeInt(componentResumeTimes.size()); 899fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy for (Map.Entry<String, Long> ent : componentResumeTimes.entrySet()) { 909fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy dest.writeString(ent.getKey()); 919fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy dest.writeLong(ent.getValue()); 929fc033083267d0c7f01e083400721b6cddb3a398Mark Brophy } 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 95