OSDN Git Service

am c660c608: Merge "add Toshiba usb driver link delete Fujitsu-Toshiba bug: 9755017...
[android-x86/frameworks-base.git] / core / java / com / android / internal / os / HandlerCaller.java
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package com.android.internal.os;
18
19 import android.content.Context;
20 import android.os.Handler;
21 import android.os.Looper;
22 import android.os.Message;
23
24 public class HandlerCaller {
25
26     public final Context mContext;
27
28     final Looper mMainLooper;
29     final Handler mH;
30
31     final Callback mCallback;
32
33     class MyHandler extends Handler {
34         MyHandler(Looper looper, boolean async) {
35             super(looper, null, async);
36         }
37
38         @Override
39         public void handleMessage(Message msg) {
40             mCallback.executeMessage(msg);
41         }
42     }
43
44     public interface Callback {
45         public void executeMessage(Message msg);
46     }
47
48     public HandlerCaller(Context context, Looper looper, Callback callback,
49             boolean asyncHandler) {
50         mContext = context;
51         mMainLooper = looper != null ? looper : context.getMainLooper();
52         mH = new MyHandler(mMainLooper, asyncHandler);
53         mCallback = callback;
54     }
55
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
59         // main thread.
60         if (Looper.myLooper() == mMainLooper) {
61             mCallback.executeMessage(msg);
62             msg.recycle();
63             return;
64         }
65         
66         mH.sendMessage(msg);
67     }
68     
69     public boolean hasMessages(int what) {
70         return mH.hasMessages(what);
71     }
72     
73     public void removeMessages(int what) {
74         mH.removeMessages(what);
75     }
76     
77     public void removeMessages(int what, Object obj) {
78         mH.removeMessages(what, obj);
79     }
80     
81     public void sendMessage(Message msg) {
82         mH.sendMessage(msg);
83     }
84     
85     public Message obtainMessage(int what) {
86         return mH.obtainMessage(what);
87     }
88     
89     public Message obtainMessageBO(int what, boolean arg1, Object arg2) {
90         return mH.obtainMessage(what, arg1 ? 1 : 0, 0, arg2);
91     }
92     
93     public Message obtainMessageBOO(int what, boolean arg1, Object arg2, Object arg3) {
94         SomeArgs args = SomeArgs.obtain();
95         args.arg1 = arg2;
96         args.arg2 = arg3;
97         return mH.obtainMessage(what, arg1 ? 1 : 0, 0, args);
98     }
99     
100     public Message obtainMessageO(int what, Object arg1) {
101         return mH.obtainMessage(what, 0, 0, arg1);
102     }
103     
104     public Message obtainMessageI(int what, int arg1) {
105         return mH.obtainMessage(what, arg1, 0);
106     }
107     
108     public Message obtainMessageII(int what, int arg1, int arg2) {
109         return mH.obtainMessage(what, arg1, arg2);
110     }
111     
112     public Message obtainMessageIO(int what, int arg1, Object arg2) {
113         return mH.obtainMessage(what, arg1, 0, arg2);
114     }
115     
116     public Message obtainMessageIIO(int what, int arg1, int arg2, Object arg3) {
117         return mH.obtainMessage(what, arg1, arg2, arg3);
118     }
119     
120     public Message obtainMessageIIOO(int what, int arg1, int arg2,
121             Object arg3, Object arg4) {
122         SomeArgs args = SomeArgs.obtain();
123         args.arg1 = arg3;
124         args.arg2 = arg4;
125         return mH.obtainMessage(what, arg1, arg2, args);
126     }
127     
128     public Message obtainMessageIOO(int what, int arg1, Object arg2, Object arg3) {
129         SomeArgs args = SomeArgs.obtain();
130         args.arg1 = arg2;
131         args.arg2 = arg3;
132         return mH.obtainMessage(what, arg1, 0, args);
133     }
134     
135     public Message obtainMessageOO(int what, Object arg1, Object arg2) {
136         SomeArgs args = SomeArgs.obtain();
137         args.arg1 = arg1;
138         args.arg2 = arg2;
139         return mH.obtainMessage(what, 0, 0, args);
140     }
141     
142     public Message obtainMessageOOO(int what, Object arg1, Object arg2, Object arg3) {
143         SomeArgs args = SomeArgs.obtain();
144         args.arg1 = arg1;
145         args.arg2 = arg2;
146         args.arg3 = arg3;
147         return mH.obtainMessage(what, 0, 0, args);
148     }
149     
150     public Message obtainMessageOOOO(int what, Object arg1, Object arg2,
151             Object arg3, Object arg4) {
152         SomeArgs args = SomeArgs.obtain();
153         args.arg1 = arg1;
154         args.arg2 = arg2;
155         args.arg3 = arg3;
156         args.arg4 = arg4;
157         return mH.obtainMessage(what, 0, 0, args);
158     }
159     
160     public Message obtainMessageIIII(int what, int arg1, int arg2,
161             int arg3, int arg4) {
162         SomeArgs args = SomeArgs.obtain();
163         args.argi1 = arg1;
164         args.argi2 = arg2;
165         args.argi3 = arg3;
166         args.argi4 = arg4;
167         return mH.obtainMessage(what, 0, 0, args);
168     }
169     
170     public Message obtainMessageIIIIII(int what, int arg1, int arg2,
171             int arg3, int arg4, int arg5, int arg6) {
172         SomeArgs args = SomeArgs.obtain();
173         args.argi1 = arg1;
174         args.argi2 = arg2;
175         args.argi3 = arg3;
176         args.argi4 = arg4;
177         args.argi5 = arg5;
178         args.argi6 = arg6;
179         return mH.obtainMessage(what, 0, 0, args);
180     }
181     
182     public Message obtainMessageIIIIO(int what, int arg1, int arg2,
183             int arg3, int arg4, Object arg5) {
184         SomeArgs args = SomeArgs.obtain();
185         args.arg1 = arg5;
186         args.argi1 = arg1;
187         args.argi2 = arg2;
188         args.argi3 = arg3;
189         args.argi4 = arg4;
190         return mH.obtainMessage(what, 0, 0, args);
191     }
192 }