Fix Settings creating too many threads unexpectedly
Limit the number of threads by using the shared thread pool in ThreadUtils. Bug: 143434413 Test: manual Change-Id: I4afe1f641a11e218616772c1d5446efcc99cd1cc
This commit is contained in:
@@ -37,12 +37,11 @@ import com.android.settings.homepage.contextualcards.logging.ContextualCardLogUt
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.utils.AsyncLoaderCompat;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
@@ -56,7 +55,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
private static final String TAG = "ContextualCardLoader";
|
||||
private static final long ELIGIBILITY_CHECKER_TIMEOUT_MS = 250;
|
||||
|
||||
private final ExecutorService mExecutorService;
|
||||
private final ContentObserver mObserver = new ContentObserver(
|
||||
new Handler(Looper.getMainLooper())) {
|
||||
@Override
|
||||
@@ -76,7 +74,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
ContextualCardLoader(Context context) {
|
||||
super(context);
|
||||
mContext = context.getApplicationContext();
|
||||
mExecutorService = Executors.newCachedThreadPool();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -163,8 +160,8 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
final List<Future<ContextualCard>> eligibleCards = new ArrayList<>();
|
||||
|
||||
for (ContextualCard card : candidates) {
|
||||
final EligibleCardChecker future = new EligibleCardChecker(mContext, card);
|
||||
eligibleCards.add(mExecutorService.submit(future));
|
||||
final EligibleCardChecker checker = new EligibleCardChecker(mContext, card);
|
||||
eligibleCards.add(ThreadUtils.postOnBackgroundThread(checker));
|
||||
}
|
||||
// Collect future and eligible cards
|
||||
for (Future<ContextualCard> cardFuture : eligibleCards) {
|
||||
|
Reference in New Issue
Block a user