android.util.Slog#wtf ( )源码实例Demo

下面列出了android.util.Slog#wtf ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android_9.0.0_r45   文件: RecentTasks.java
private void syncPersistentTaskIdsLocked() {
    for (int i = mPersistedTaskIds.size() - 1; i >= 0; i--) {
        int userId = mPersistedTaskIds.keyAt(i);
        if (mUsersWithRecentsLoaded.get(userId)) {
            // Recents are loaded only after task ids are loaded. Therefore, the set of taskids
            // referenced here should not be null.
            mPersistedTaskIds.valueAt(i).clear();
        }
    }
    for (int i = mTasks.size() - 1; i >= 0; i--) {
        final TaskRecord task = mTasks.get(i);
        if (shouldPersistTaskLocked(task)) {
            // Set of persisted taskIds for task.userId should not be null here
            // TODO Investigate why it can happen. For now initialize with an empty set
            if (mPersistedTaskIds.get(task.userId) == null) {
                Slog.wtf(TAG, "No task ids found for userId " + task.userId + ". task=" + task
                        + " mPersistedTaskIds=" + mPersistedTaskIds);
                mPersistedTaskIds.put(task.userId, new SparseBooleanArray());
            }
            mPersistedTaskIds.get(task.userId).put(task.taskId, true);
        }
    }
}
 
源代码2 项目: android_9.0.0_r45   文件: StorageManagerService.java
/**
 * Set a field in the crypto header.
 * @param field field to set
 * @param contents contents to set in field
 */
@Override
public void setField(String field, String contents) throws RemoteException {
    mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
        "no permission to access the crypt keeper");

    if (StorageManager.isFileEncryptedNativeOnly()) {
        // Not supported on FBE devices
        return;
    }

    try {
        mVold.fdeSetField(field, contents);
        return;
    } catch (Exception e) {
        Slog.wtf(TAG, e);
        return;
    }
}
 
源代码3 项目: android_9.0.0_r45   文件: SystemServiceManager.java
public void unlockUser(final int userHandle) {
    Slog.i(TAG, "Calling onUnlockUser u" + userHandle);
    final int serviceLen = mServices.size();
    for (int i = 0; i < serviceLen; i++) {
        final SystemService service = mServices.get(i);
        Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "onUnlockUser "
                + service.getClass().getName());
        long time = SystemClock.elapsedRealtime();
        try {
            service.onUnlockUser(userHandle);
        } catch (Exception ex) {
            Slog.wtf(TAG, "Failure reporting unlock of user " + userHandle
                    + " to service " + service.getClass().getName(), ex);
        }
        warnIfTooLong(SystemClock.elapsedRealtime() - time, service, "onUnlockUser ");
        Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
    }
}
 
源代码4 项目: android_9.0.0_r45   文件: ZygoteProcess.java
/**
 * Try connecting to the Zygote over and over again until we hit a time-out.
 * @param address The name of the socket to connect to.
 */
public static void waitForConnectionToZygote(LocalSocketAddress address) {
    for (int n = 20; n >= 0; n--) {
        try {
            final ZygoteState zs = ZygoteState.connect(address);
            zs.close();
            return;
        } catch (IOException ioe) {
            Log.w(LOG_TAG,
                    "Got error connecting to zygote, retrying. msg= " + ioe.getMessage());
        }

        try {
            Thread.sleep(1000);
        } catch (InterruptedException ie) {
        }
    }
    Slog.wtf(LOG_TAG, "Failed to connect to Zygote through socket " + address.getName());
}
 
private void setProperty(String key, String value) {
    // Check if need to clear the property
    if (value == null) {
        // It's impossible to remove system property, therefore we check previous value to
        // avoid setting an empty string if the property wasn't set.
        if (TextUtils.isEmpty(systemPropertiesGet(key))) {
            return;
        }
        value = "";
    }
    try {
        systemPropertiesSet(key, value);
    } catch (Exception e) {
        // Failure to set a property can be caused by SELinux denial. This usually indicates
        // that the property wasn't whitelisted in sepolicy.
        // No need to report it on all user devices, only on debug builds.
        if (Build.IS_DEBUGGABLE) {
            Slog.wtf(TAG, "Unable to set property " + key + " value '" + value + "'", e);
        } else {
            Slog.e(TAG, "Unable to set property " + key + " value '" + value + "'", e);
        }
    }
}
 
源代码6 项目: android_9.0.0_r45   文件: PackageDexOptimizer.java
@GuardedBy("mInstallLock")
private void releaseWakeLockLI(final long acquireTime) {
    if (acquireTime < 0) {
        return;
    }
    try {
        if (mDexoptWakeLock.isHeld()) {
            mDexoptWakeLock.release();
        }
        final long duration = SystemClock.elapsedRealtime() - acquireTime;
        if (duration >= WAKELOCK_TIMEOUT_MS) {
            Slog.wtf(TAG, "WakeLock " + mDexoptWakeLock.getTag()
                    + " time out. Operation took " + duration + " ms. Thread: "
                    + Thread.currentThread().getName());
        }
    } catch (Exception e) {
        Slog.wtf(TAG, "Error while releasing " + mDexoptWakeLock.getTag() + " lock", e);
    }
}
 
源代码7 项目: android_9.0.0_r45   文件: PowerManagerService.java
@Override
protected void finalize() throws Throwable {
    try {
        if (mReferenceCount != 0) {
            Slog.wtf(TAG, "Suspend blocker \"" + mName
                    + "\" was finalized without being released!");
            mReferenceCount = 0;
            nativeReleaseSuspendBlocker(mName);
            Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0);
        }
    } finally {
        super.finalize();
    }
}
 
源代码8 项目: android_9.0.0_r45   文件: ClipboardService.java
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
        throws RemoteException {
    try {
        return super.onTransact(code, data, reply, flags);
    } catch (RuntimeException e) {
        if (!(e instanceof SecurityException)) {
            Slog.wtf("clipboard", "Exception: ", e);
        }
        throw e;
    }

}
 
源代码9 项目: android_9.0.0_r45   文件: AlarmManagerService.java
private void setLocked(int type, long when) {
    if (mNativeData != 0) {
        // The kernel never triggers alarms with negative wakeup times
        // so we ensure they are positive.
        long alarmSeconds, alarmNanoseconds;
        if (when < 0) {
            alarmSeconds = 0;
            alarmNanoseconds = 0;
        } else {
            alarmSeconds = when / 1000;
            alarmNanoseconds = (when % 1000) * 1000 * 1000;
        }

        final int result = set(mNativeData, type, alarmSeconds, alarmNanoseconds);
        if (result != 0) {
            final long nowElapsed = SystemClock.elapsedRealtime();
            Slog.wtf(TAG, "Unable to set kernel alarm, now=" + nowElapsed
                    + " type=" + type + " when=" + when
                    + " @ (" + alarmSeconds + "," + alarmNanoseconds
                    + "), ret = " + result + " = " + Os.strerror(result));
        }
    } else {
        Message msg = Message.obtain();
        msg.what = ALARM_EVENT;

        mHandler.removeMessages(ALARM_EVENT);
        mHandler.sendMessageAtTime(msg, when);
    }
}
 
源代码10 项目: android_9.0.0_r45   文件: IpSecService.java
public void systemReady() {
    if (isNetdAlive()) {
        Slog.d(TAG, "IpSecService is ready");
    } else {
        Slog.wtf(TAG, "IpSecService not ready: failed to connect to NetD Native Service!");
    }
}
 
源代码11 项目: android_9.0.0_r45   文件: StorageManagerService.java
@Override
public void lockUserKey(int userId) {
    enforcePermission(android.Manifest.permission.STORAGE_INTERNAL);

    try {
        mVold.lockUserKey(userId);
    } catch (Exception e) {
        Slog.wtf(TAG, e);
        return;
    }

    synchronized (mLock) {
        mLocalUnlockedUsers = ArrayUtils.removeInt(mLocalUnlockedUsers, userId);
    }
}
 
@Override
protected void postInstall(Context context, Intent intent) {
    try {
        context.getSystemService(NetworkWatchlistManager.class).reloadWatchlist();
    } catch (Exception e) {
        // Network Watchlist is not available
        Slog.wtf("NetworkWatchlistInstallReceiver", "Unable to reload watchlist");
    }
}
 
源代码13 项目: android_9.0.0_r45   文件: TaskSnapshotPersister.java
File getBitmapFile(int taskId, int userId) {
    // Full sized bitmaps are disabled on low ram devices
    if (DISABLE_FULL_SIZED_BITMAPS) {
        Slog.wtf(TAG, "This device does not support full sized resolution bitmaps.");
        return null;
    }
    return new File(getDirectory(userId), taskId + BITMAP_EXTENSION);
}
 
源代码14 项目: android_9.0.0_r45   文件: StorageManagerService.java
private void onUnlockUser(int userId) {
    Slog.d(TAG, "onUnlockUser " + userId);

    // We purposefully block here to make sure that user-specific
    // staging area is ready so it's ready for zygote-forked apps to
    // bind mount against.
    try {
        mVold.onUserStarted(userId);
        mStoraged.onUserStarted(userId);
    } catch (Exception e) {
        Slog.wtf(TAG, e);
    }

    // Record user as started so newly mounted volumes kick off events
    // correctly, then synthesize events for any already-mounted volumes.
    synchronized (mLock) {
        for (int i = 0; i < mVolumes.size(); i++) {
            final VolumeInfo vol = mVolumes.valueAt(i);
            if (vol.isVisibleForRead(userId) && vol.isMountedReadable()) {
                final StorageVolume userVol = vol.buildStorageVolume(mContext, userId, false);
                mHandler.obtainMessage(H_VOLUME_BROADCAST, userVol).sendToTarget();

                final String envState = VolumeInfo.getEnvironmentForState(vol.getState());
                mCallbacks.notifyStorageStateChanged(userVol.getPath(), envState, envState);
            }
        }
        mSystemUnlockedUsers = ArrayUtils.appendInt(mSystemUnlockedUsers, userId);
    }
}
 
源代码15 项目: android_9.0.0_r45   文件: SafeActivityOptions.java
private void setCallingPidForRemoteAnimationAdapter(ActivityOptions options, int callingPid) {
    final RemoteAnimationAdapter adapter = options.getRemoteAnimationAdapter();
    if (adapter == null) {
        return;
    }
    if (callingPid == Process.myPid()) {
        Slog.wtf(TAG, "Safe activity options constructed after clearing calling id");
        return;
    }
    adapter.setCallingPid(callingPid);
}
 
源代码16 项目: android_9.0.0_r45   文件: StorageManagerService.java
/**
 * Get the type of encryption used to encrypt the master key.
 * @return The type, one of the CRYPT_TYPE_XXX consts from StorageManager.
 */
@Override
public int getPasswordType() {
    mContext.enforceCallingOrSelfPermission(Manifest.permission.CRYPT_KEEPER,
        "no permission to access the crypt keeper");

    try {
        return mVold.fdeGetPasswordType();
    } catch (Exception e) {
        Slog.wtf(TAG, e);
        return -1;
    }
}
 
源代码17 项目: android_9.0.0_r45   文件: MultipathPolicyTracker.java
@Override
public void onChange(boolean selfChange, Uri uri) {
    if (!Settings.Global.getUriFor(NETWORK_DEFAULT_DAILY_MULTIPATH_QUOTA_BYTES)
            .equals(uri)) {
        Slog.wtf(TAG, "Unexpected settings observation: " + uri);
    }
    if (DBG) Slog.d(TAG, "Settings change: updating budgets.");
    updateAllMultipathBudgets();
}
 
源代码18 项目: android_9.0.0_r45   文件: StorageManagerService.java
@Override
public void format(String volId) {
    enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS);

    final VolumeInfo vol = findVolumeByIdOrThrow(volId);
    try {
        mVold.format(vol.id, "auto");
    } catch (Exception e) {
        Slog.wtf(TAG, e);
    }
}
 
源代码19 项目: android_9.0.0_r45   文件: DropBoxManagerService.java
/**
 * Extracts metadata from an existing on-disk log filename.
 *
 * Note when a filename is not recognizable, it will create an instance that
 * {@link #hasFile()} would return false on, and also remove the file.
 *
 * @param file name of existing log file
 * @param blockSize to use for space accounting
 */
public EntryFile(File file, int blockSize) {

    boolean parseFailure = false;

    String name = file.getName();
    int flags = 0;
    String tag = null;
    long millis = 0;

    final int at = name.lastIndexOf('@');
    if (at < 0) {
        parseFailure = true;
    } else {
        tag = Uri.decode(name.substring(0, at));
        if (name.endsWith(".gz")) {
            flags |= DropBoxManager.IS_GZIPPED;
            name = name.substring(0, name.length() - 3);
        }
        if (name.endsWith(".lost")) {
            flags |= DropBoxManager.IS_EMPTY;
            name = name.substring(at + 1, name.length() - 5);
        } else if (name.endsWith(".txt")) {
            flags |= DropBoxManager.IS_TEXT;
            name = name.substring(at + 1, name.length() - 4);
        } else if (name.endsWith(".dat")) {
            name = name.substring(at + 1, name.length() - 4);
        } else {
            parseFailure = true;
        }
        if (!parseFailure) {
            try {
                millis = Long.parseLong(name);
            } catch (NumberFormatException e) {
                parseFailure = true;
            }
        }
    }
    if (parseFailure) {
        Slog.wtf(TAG, "Invalid filename: " + file);

        // Remove the file and return an empty instance.
        file.delete();
        this.tag = null;
        this.flags = DropBoxManager.IS_EMPTY;
        this.timestampMillis = 0;
        this.blocks = 0;
        return;
    }

    this.blocks = (int) ((file.length() + blockSize - 1) / blockSize);
    this.tag = TextUtils.safeIntern(tag);
    this.flags = flags;
    this.timestampMillis = millis;
}
 
源代码20 项目: android_9.0.0_r45   文件: DexManager.java
private void notifyDexLoadInternal(ApplicationInfo loadingAppInfo,
        List<String> classLoaderNames, List<String> classPaths, String loaderIsa,
        int loaderUserId) {
    if (classLoaderNames.size() != classPaths.size()) {
        Slog.wtf(TAG, "Bad call to noitfyDexLoad: args have different size");
        return;
    }
    if (classLoaderNames.isEmpty()) {
        Slog.wtf(TAG, "Bad call to notifyDexLoad: class loaders list is empty");
        return;
    }
    if (!PackageManagerServiceUtils.checkISA(loaderIsa)) {
        Slog.w(TAG, "Loading dex files " + classPaths + " in unsupported ISA: " +
                loaderIsa + "?");
        return;
    }

    // The classpath is represented as a list of dex files separated by File.pathSeparator.
    String[] dexPathsToRegister = classPaths.get(0).split(File.pathSeparator);

    // Encode the class loader contexts for the dexPathsToRegister.
    String[] classLoaderContexts = DexoptUtils.processContextForDexLoad(
            classLoaderNames, classPaths);

    int dexPathIndex = 0;
    for (String dexPath : dexPathsToRegister) {
        // Find the owning package name.
        DexSearchResult searchResult = getDexPackage(loadingAppInfo, dexPath, loaderUserId);

        if (DEBUG) {
            Slog.i(TAG, loadingAppInfo.packageName
                + " loads from " + searchResult + " : " + loaderUserId + " : " + dexPath);
        }

        if (searchResult.mOutcome != DEX_SEARCH_NOT_FOUND) {
            // TODO(calin): extend isUsedByOtherApps check to detect the cases where
            // different apps share the same runtime. In that case we should not mark the dex
            // file as isUsedByOtherApps. Currently this is a safe approximation.
            boolean isUsedByOtherApps = !loadingAppInfo.packageName.equals(
                    searchResult.mOwningPackageName);
            boolean primaryOrSplit = searchResult.mOutcome == DEX_SEARCH_FOUND_PRIMARY ||
                    searchResult.mOutcome == DEX_SEARCH_FOUND_SPLIT;

            if (primaryOrSplit && !isUsedByOtherApps) {
                // If the dex file is the primary apk (or a split) and not isUsedByOtherApps
                // do not record it. This case does not bring any new usable information
                // and can be safely skipped.
                continue;
            }

            // Record dex file usage. If the current usage is a new pattern (e.g. new secondary,
            // or UsedBytOtherApps), record will return true and we trigger an async write
            // to disk to make sure we don't loose the data in case of a reboot.

            // A null classLoaderContexts means that there are unsupported class loaders in the
            // chain.
            String classLoaderContext = classLoaderContexts == null
                    ? PackageDexUsage.UNSUPPORTED_CLASS_LOADER_CONTEXT
                    : classLoaderContexts[dexPathIndex];
            if (mPackageDexUsage.record(searchResult.mOwningPackageName,
                    dexPath, loaderUserId, loaderIsa, isUsedByOtherApps, primaryOrSplit,
                    loadingAppInfo.packageName, classLoaderContext)) {
                mPackageDexUsage.maybeWriteAsync();
            }
        } else {
            // If we can't find the owner of the dex we simply do not track it. The impact is
            // that the dex file will not be considered for offline optimizations.
            if (DEBUG) {
                Slog.i(TAG, "Could not find owning package for dex file: " + dexPath);
            }
        }
        dexPathIndex++;
    }
}
 
 方法所在类