Handler_Delegate.java revision 2eea6fab1cbb0a5c8f913491c2d622c904759893
12eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet/* 22eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * Copyright (C) 2010 The Android Open Source Project 32eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * 42eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License"); 52eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * you may not use this file except in compliance with the License. 62eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * You may obtain a copy of the License at 72eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * 82eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * http://www.apache.org/licenses/LICENSE-2.0 92eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * 102eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software 112eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS, 122eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * See the License for the specific language governing permissions and 142eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * limitations under the License. 152eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet */ 162eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 172eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohetpackage android.os; 182eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 192eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 202eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet/** 212eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * Delegate overriding selected methods of android.os.Handler 222eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * 232eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * Through the layoutlib_create tool, selected methods of Handler have been replaced 242eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * by calls to methods of the same name in this delegate class. 252eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * 262eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet * 272eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet */ 282eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohetpublic class Handler_Delegate { 292eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 302eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet // -------- Delegate methods 312eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 322eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet /*package*/ static boolean sendMessageAtTime(Handler handler, Message msg, long uptimeMillis) { 332eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet // get the callback 342eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet IHandlerCallback callback = sCallbacks.get(); 352eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet if (callback != null) { 362eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet callback.sendMessageAtTime(handler, msg, uptimeMillis); 372eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet } 382eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet return true; 392eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet } 402eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 412eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet // -------- Delegate implementation 422eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 432eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet public interface IHandlerCallback { 442eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet void sendMessageAtTime(Handler handler, Message msg, long uptimeMillis); 452eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet } 462eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 472eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet private final static ThreadLocal<IHandlerCallback> sCallbacks = 482eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet new ThreadLocal<IHandlerCallback>(); 492eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 502eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet public static void setCallback(IHandlerCallback callback) { 512eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet sCallbacks.set(callback); 522eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet } 532eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet 542eea6fab1cbb0a5c8f913491c2d622c904759893Xavier Ducrohet} 55