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