Add background executor fow WmShell

Add a low priority ShellExectuor for background task in WmShell

Test: N/A
Bug: 228936326
Change-Id: I10adafa03aca98a9080fd4ac1e8ba42fa9683914
This commit is contained in:
Vadim Caen
2022-04-12 17:04:45 +02:00
parent 21469e70d6
commit e6a1b4e8bc
2 changed files with 59 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
/*
* Copyright (C) 2021 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.wm.shell.common.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Qualifier;
/** Annotates a method or qualifies a provider that runs on the shared background thread */
@Documented
@Inherited
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface ShellBackgroundThread {
}

View File

@@ -16,6 +16,7 @@
package com.android.wm.shell.dagger;
import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
import static android.os.Process.THREAD_PRIORITY_DISPLAY;
import static android.os.Process.THREAD_PRIORITY_TOP_APP_BOOST;
@@ -36,6 +37,7 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.annotations.ChoreographerSfVsync;
import com.android.wm.shell.common.annotations.ExternalMainThread;
import com.android.wm.shell.common.annotations.ShellAnimationThread;
import com.android.wm.shell.common.annotations.ShellBackgroundThread;
import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.common.annotations.ShellSplashscreenThread;
@@ -195,4 +197,28 @@ public abstract class WMShellConcurrencyModule {
throw new RuntimeException("Failed to initialize SfVsync animation handler in 1s", e);
}
}
/**
* Provides a Shell background thread Handler for low priority background tasks.
*/
@WMSingleton
@Provides
@ShellBackgroundThread
public static Handler provideSharedBackgroundHandler() {
HandlerThread shellBackgroundThread = new HandlerThread("wmshell.background",
THREAD_PRIORITY_BACKGROUND);
shellBackgroundThread.start();
return shellBackgroundThread.getThreadHandler();
}
/**
* Provides a Shell background thread Executor for low priority background tasks.
*/
@WMSingleton
@Provides
@ShellBackgroundThread
public static ShellExecutor provideSharedBackgroundExecutor(
@ShellBackgroundThread Handler handler) {
return new HandlerExecutor(handler);
}
}