2 * Copyright (C) 2008 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package com.android.internal.os;
19 import android.content.Context;
20 import android.os.Handler;
21 import android.os.Looper;
22 import android.os.Message;
24 public class HandlerCaller {
26 public final Context mContext;
28 final Looper mMainLooper;
31 final Callback mCallback;
33 class MyHandler extends Handler {
34 MyHandler(Looper looper, boolean async) {
35 super(looper, null, async);
39 public void handleMessage(Message msg) {
40 mCallback.executeMessage(msg);
44 public interface Callback {
45 public void executeMessage(Message msg);
48 public HandlerCaller(Context context, Looper looper, Callback callback,
49 boolean asyncHandler) {
51 mMainLooper = looper != null ? looper : context.getMainLooper();
52 mH = new MyHandler(mMainLooper, asyncHandler);
56 public void executeOrSendMessage(Message msg) {
57 // If we are calling this from the main thread, then we can call
58 // right through. Otherwise, we need to send the message to the
60 if (Looper.myLooper() == mMainLooper) {
61 mCallback.executeMessage(msg);
69 public boolean hasMessages(int what) {
70 return mH.hasMessages(what);
73 public void removeMessages(int what) {
74 mH.removeMessages(what);
77 public void removeMessages(int what, Object obj) {
78 mH.removeMessages(what, obj);
81 public void sendMessage(Message msg) {
85 public Message obtainMessage(int what) {
86 return mH.obtainMessage(what);
89 public Message obtainMessageBO(int what, boolean arg1, Object arg2) {
90 return mH.obtainMessage(what, arg1 ? 1 : 0, 0, arg2);
93 public Message obtainMessageBOO(int what, boolean arg1, Object arg2, Object arg3) {
94 SomeArgs args = SomeArgs.obtain();
97 return mH.obtainMessage(what, arg1 ? 1 : 0, 0, args);
100 public Message obtainMessageO(int what, Object arg1) {
101 return mH.obtainMessage(what, 0, 0, arg1);
104 public Message obtainMessageI(int what, int arg1) {
105 return mH.obtainMessage(what, arg1, 0);
108 public Message obtainMessageII(int what, int arg1, int arg2) {
109 return mH.obtainMessage(what, arg1, arg2);
112 public Message obtainMessageIO(int what, int arg1, Object arg2) {
113 return mH.obtainMessage(what, arg1, 0, arg2);
116 public Message obtainMessageIIO(int what, int arg1, int arg2, Object arg3) {
117 return mH.obtainMessage(what, arg1, arg2, arg3);
120 public Message obtainMessageIIOO(int what, int arg1, int arg2,
121 Object arg3, Object arg4) {
122 SomeArgs args = SomeArgs.obtain();
125 return mH.obtainMessage(what, arg1, arg2, args);
128 public Message obtainMessageIOO(int what, int arg1, Object arg2, Object arg3) {
129 SomeArgs args = SomeArgs.obtain();
132 return mH.obtainMessage(what, arg1, 0, args);
135 public Message obtainMessageOO(int what, Object arg1, Object arg2) {
136 SomeArgs args = SomeArgs.obtain();
139 return mH.obtainMessage(what, 0, 0, args);
142 public Message obtainMessageOOO(int what, Object arg1, Object arg2, Object arg3) {
143 SomeArgs args = SomeArgs.obtain();
147 return mH.obtainMessage(what, 0, 0, args);
150 public Message obtainMessageOOOO(int what, Object arg1, Object arg2,
151 Object arg3, Object arg4) {
152 SomeArgs args = SomeArgs.obtain();
157 return mH.obtainMessage(what, 0, 0, args);
160 public Message obtainMessageIIII(int what, int arg1, int arg2,
161 int arg3, int arg4) {
162 SomeArgs args = SomeArgs.obtain();
167 return mH.obtainMessage(what, 0, 0, args);
170 public Message obtainMessageIIIIII(int what, int arg1, int arg2,
171 int arg3, int arg4, int arg5, int arg6) {
172 SomeArgs args = SomeArgs.obtain();
179 return mH.obtainMessage(what, 0, 0, args);
182 public Message obtainMessageIIIIO(int what, int arg1, int arg2,
183 int arg3, int arg4, Object arg5) {
184 SomeArgs args = SomeArgs.obtain();
190 return mH.obtainMessage(what, 0, 0, args);