165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos/* 265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Copyright (C) 2014 The Android Open Source Project 365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * 465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License"); 565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * you may not use this file except in compliance with the License. 665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * You may obtain a copy of the License at 765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * 865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * http://www.apache.org/licenses/LICENSE-2.0 965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * 1065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Unless required by applicable law or agreed to in writing, software 1165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS, 1265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * See the License for the specific language governing permissions and 1465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * limitations under the License 1565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos */ 1665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 1765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roospackage com.android.launcher3; 1865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 1965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roosimport android.os.Handler; 2065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roosimport android.os.Looper; 2165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 2265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roosimport java.util.List; 2365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roosimport java.util.concurrent.AbstractExecutorService; 2465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roosimport java.util.concurrent.TimeUnit; 2565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 2665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos/** 2765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * An executor service that executes its tasks on the main thread. 2865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * 2965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Shutting down this executor is not supported. 3065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos */ 3165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roospublic class MainThreadExecutor extends AbstractExecutorService { 3265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 3365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos private Handler mHandler = new Handler(Looper.getMainLooper()); 3465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 3565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Override 3665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos public void execute(Runnable runnable) { 3765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos if (Looper.getMainLooper() == Looper.myLooper()) { 3865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos runnable.run(); 3965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } else { 4065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos mHandler.post(runnable); 4165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 4265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 4365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 4465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos /** 4565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Not supported and throws an exception when used. 4665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos */ 4765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Override 4865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Deprecated 4965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos public void shutdown() { 5065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos throw new UnsupportedOperationException(); 5165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 5265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 5365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos /** 5465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Not supported and throws an exception when used. 5565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos */ 5665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Override 5765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Deprecated 5865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos public List<Runnable> shutdownNow() { 5965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos throw new UnsupportedOperationException(); 6065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 6165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 6265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Override 6365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos public boolean isShutdown() { 6465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos return false; 6565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 6665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 6765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Override 6865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos public boolean isTerminated() { 6965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos return false; 7065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 7165d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos 7265d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos /** 7365d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos * Not supported and throws an exception when used. 7465d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos */ 7565d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Override 7665d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos @Deprecated 7765d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos public boolean awaitTermination(long l, TimeUnit timeUnit) throws InterruptedException { 7865d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos throw new UnsupportedOperationException(); 7965d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos } 8065d60e21ec22e3bf03ba39f7a0be24df2cc914a2Adrian Roos} 81