1ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/* 2ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Copyright (C) 2010 The Android Open Source Project 3ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 4ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * you may not use this file except in compliance with the License. 6ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * You may obtain a copy of the License at 7ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 8ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 10ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Unless required by applicable law or agreed to in writing, software 11ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * See the License for the specific language governing permissions and 14ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * limitations under the License. 15ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 16ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 17ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipackage android.os; 18ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 19ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport com.android.tools.layoutlib.annotations.LayoutlibDelegate; 20ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 21ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 22ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/** 23ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Delegate overriding selected methods of android.os.Handler 24ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 25ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Through the layoutlib_create tool, selected methods of Handler have been replaced 26ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * by calls to methods of the same name in this delegate class. 27ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 28ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * 29ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */ 30ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipublic class Handler_Delegate { 31ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 32ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // -------- Delegate methods 33ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 34ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski @LayoutlibDelegate 35ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski /*package*/ static boolean sendMessageAtTime(Handler handler, Message msg, long uptimeMillis) { 36ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // get the callback 37ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski IHandlerCallback callback = sCallbacks.get(); 38ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski if (callback != null) { 39ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski callback.sendMessageAtTime(handler, msg, uptimeMillis); 40ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 41ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski return true; 42ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 43ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 44ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski // -------- Delegate implementation 45ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 46ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public interface IHandlerCallback { 47ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski void sendMessageAtTime(Handler handler, Message msg, long uptimeMillis); 48ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 49ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 50ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski private final static ThreadLocal<IHandlerCallback> sCallbacks = 51ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski new ThreadLocal<IHandlerCallback>(); 52ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 53ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski public static void setCallback(IHandlerCallback callback) { 54ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski sCallbacks.set(callback); 55ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski } 56ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski 57ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski} 58