CallSubDelayed is a combination of StartActivity, StartService and CallSub.
Unlike CallSub which only works with currently running components, CallSubDelayed will first start the target component if needed.
CallSubDelayed can also be used to call subs in the current module. Instead of calling these subs directly, a message will be sent to the message queue.
The sub will be called when the message is processed. This is useful in cases where you want to do something "right after" the current sub (usually related to UI events).
Note that if you call an Activity while the whole application is in the background (no visible activities), the sub will be executed once the target activity is resumed.