16f357d3284a833cc50a990e14b39f389b8972254Jeff Brown/* 26f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Copyright (C) 2008 The Android Open Source Project 36f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 46f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 56f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * you may not use this file except in compliance with the License. 66f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * You may obtain a copy of the License at 76f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 86f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 96f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * 106f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Unless required by applicable law or agreed to in writing, software 116f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 126f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * See the License for the specific language governing permissions and 146f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * limitations under the License. 156f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 166f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 176f357d3284a833cc50a990e14b39f389b8972254Jeff Brownpackage com.android.server; 186f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 196f357d3284a833cc50a990e14b39f389b8972254Jeff Brownimport android.os.HandlerThread; 206f357d3284a833cc50a990e14b39f389b8972254Jeff Brownimport android.os.Process; 216f357d3284a833cc50a990e14b39f389b8972254Jeff Brownimport android.os.StrictMode; 226f357d3284a833cc50a990e14b39f389b8972254Jeff Brownimport android.util.Slog; 236f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 246f357d3284a833cc50a990e14b39f389b8972254Jeff Brown/** 256f357d3284a833cc50a990e14b39f389b8972254Jeff Brown * Special handler thread that we create for system services that require their own loopers. 266f357d3284a833cc50a990e14b39f389b8972254Jeff Brown */ 274ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brownpublic class ServiceThread extends HandlerThread { 286f357d3284a833cc50a990e14b39f389b8972254Jeff Brown private static final String TAG = "ServiceThread"; 296f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 304ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown private final boolean mAllowIo; 314ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown 324ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown public ServiceThread(String name, int priority, boolean allowIo) { 336f357d3284a833cc50a990e14b39f389b8972254Jeff Brown super(name, priority); 344ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown mAllowIo = allowIo; 356f357d3284a833cc50a990e14b39f389b8972254Jeff Brown } 366f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 376f357d3284a833cc50a990e14b39f389b8972254Jeff Brown @Override 386f357d3284a833cc50a990e14b39f389b8972254Jeff Brown public void run() { 396f357d3284a833cc50a990e14b39f389b8972254Jeff Brown Process.setCanSelfBackground(false); 406f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 416f357d3284a833cc50a990e14b39f389b8972254Jeff Brown // For debug builds, log event loop stalls to dropbox for analysis. 424ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown if (!mAllowIo && StrictMode.conditionallyEnableDebugLogging()) { 436f357d3284a833cc50a990e14b39f389b8972254Jeff Brown Slog.i(TAG, "Enabled StrictMode logging for " + getName() + " looper."); 446f357d3284a833cc50a990e14b39f389b8972254Jeff Brown } 456f357d3284a833cc50a990e14b39f389b8972254Jeff Brown 466f357d3284a833cc50a990e14b39f389b8972254Jeff Brown super.run(); 476f357d3284a833cc50a990e14b39f389b8972254Jeff Brown } 486f357d3284a833cc50a990e14b39f389b8972254Jeff Brown}