IApplicationThread.java revision 06de2ea752171f52a4e6e6872cb3a0689e591dcb
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.app;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ComponentName;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ActivityInfo;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ApplicationInfo;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ProviderInfo;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ServiceInfo;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Configuration;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IInterface;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileDescriptor;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Map;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private API for communicating with the application.  This is given to
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the activity manager by an application  when it starts up, for the activity
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * manager to tell the application about things it needs to do.
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface IApplicationThread extends IInterface {
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void schedulePauseActivity(IBinder token, boolean finished, boolean userLeaving,
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges) throws RemoteException;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleStopActivity(IBinder token, boolean showWindow,
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges) throws RemoteException;
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleWindowVisibility(IBinder token, boolean showWindow) throws RemoteException;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleResumeActivity(IBinder token, boolean isForward) throws RemoteException;
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleSendResult(IBinder token, List<ResultInfo> results) throws RemoteException;
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleLaunchActivity(Intent intent, IBinder token,
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ActivityInfo info, Bundle state, List<ResultInfo> pendingResults,
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    		List<Intent> pendingNewIntents, boolean notResumed, boolean isForward)
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    		throws RemoteException;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleRelaunchActivity(IBinder token, List<ResultInfo> pendingResults,
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<Intent> pendingNewIntents, int configChanges,
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean notResumed) throws RemoteException;
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleNewIntent(List<Intent> intent, IBinder token) throws RemoteException;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleDestroyActivity(IBinder token, boolean finished,
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges) throws RemoteException;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleReceiver(Intent intent, ActivityInfo info, int resultCode,
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String data, Bundle extras, boolean sync) throws RemoteException;
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleCreateService(IBinder token, ServiceInfo info) throws RemoteException;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleBindService(IBinder token,
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent, boolean rebind) throws RemoteException;
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleUnbindService(IBinder token,
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent) throws RemoteException;
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleServiceArgs(IBinder token, int startId, Intent args) throws RemoteException;
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleStopService(IBinder token) throws RemoteException;
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int DEBUG_OFF = 0;
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int DEBUG_ON = 1;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int DEBUG_WAIT = 2;
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void bindApplication(String packageName, ApplicationInfo info, List<ProviderInfo> providers,
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ComponentName testName, String profileName, Bundle testArguments,
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IInstrumentationWatcher testWatcher, int debugMode, Configuration config, Map<String,
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder> services) throws RemoteException;
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleExit() throws RemoteException;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void requestThumbnail(IBinder token) throws RemoteException;
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleConfigurationChanged(Configuration config) throws RemoteException;
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void updateTimeZone() throws RemoteException;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void processInBackground() throws RemoteException;
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void dumpService(FileDescriptor fd, IBinder servicetoken, String[] args)
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent,
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int resultCode, String data, Bundle extras, boolean ordered)
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException;
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleLowMemory() throws RemoteException;
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void scheduleActivityConfigurationChanged(IBinder token) throws RemoteException;
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void requestPss() throws RemoteException;
89f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project    void profilerControl(boolean start, String path) throws RemoteException;
9006de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn    void setSchedulingGroup(int group) throws RemoteException;
9106de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String descriptor = "android.app.IApplicationThread";
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_PAUSE_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION;
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_STOP_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+2;
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_WINDOW_VISIBILITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+3;
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_RESUME_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+4;
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_SEND_RESULT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+5;
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+6;
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_NEW_INTENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+7;
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_FINISH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+8;
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+9;
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_CREATE_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+10;
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_STOP_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+11;
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int BIND_APPLICATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+12;
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_EXIT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+13;
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int REQUEST_THUMBNAIL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+14;
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+15;
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_SERVICE_ARGS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+16;
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int UPDATE_TIME_ZONE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+17;
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int PROCESS_IN_BACKGROUND_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+18;
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_BIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+19;
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_UNBIND_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+20;
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int DUMP_SERVICE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+21;
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_REGISTERED_RECEIVER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+22;
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_LOW_MEMORY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+23;
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+24;
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+25;
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int REQUEST_PSS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+26;
120f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project    int PROFILER_CONTROL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+27;
12106de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn    int SET_SCHEDULING_GROUP_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+28;
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
123