Mega Code Archive

 
Categories / Android / Core Class
 

Private and debugging Binder APIs

/*  * Copyright (C) 2008 The Android Open Source Project  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *  *      http://www.apache.org/licenses/LICENSE-2.0  *  * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  */ package com.android.internal.os; import java.lang.ref.WeakReference; import android.os.IBinder; import android.os.SystemClock; import android.util.EventLog; /**  * Private and debugging Binder APIs.  *   * @see IBinder  */ public class BinderInternal {     static WeakReference<GcWatcher> mGcWatcher             = new WeakReference<GcWatcher>(new GcWatcher());     static long mLastGcTime;          static final class GcWatcher {         @Override         protected void finalize() throws Throwable {             handleGc();             mLastGcTime = SystemClock.uptimeMillis();             mGcWatcher = new WeakReference<GcWatcher>(new GcWatcher());         }     }          /**      * Add the calling thread to the IPC thread pool.  This function does      * not return until the current process is exiting.      */     public static final native void joinThreadPool();          /**      * Return the system time (as reported by {@link SystemClock#uptimeMillis      * SystemClock.uptimeMillis()}) that the last garbage collection occurred      * in this process.  This is not for general application use, and the      * meaning of "when a garbage collection occurred" will change as the      * garbage collector evolves.      *       * @return Returns the time as per {@link SystemClock#uptimeMillis      * SystemClock.uptimeMillis()} of the last garbage collection.      */     public static long getLastGcTime() {         return mLastGcTime;     }     /**      * Return the global "context object" of the system.  This is usually      * an implementation of IServiceManager, which you can use to find      * other services.      */     public static final native IBinder getContextObject();          static native final void handleGc();          public static void forceGc(String reason) {         EventLog.writeEvent(2741, reason);         Runtime.getRuntime().gc();     }          static void forceBinderGc() {         forceGc("Binder");     } }