A host and a client may perform inter-process communication (IPC) with automatic object serialization and deserialization and with application not responding (ANR) checking. A sender (e.g., a host process, host application, host device, a client process, client application, client device, etc.) may automatically serialize an object by using reflection (e.g., the ability of a process to examine, introspect, and modify its own structure and behavior) to recursively obtain all fields and corresponding key-value pairs from each layer of the object (as well as any parent object with inheritance). The sender may bundle the fields and key-value pairs and transmit the bundle to a receiver (e.g., the client if the host is the sender, the host if the client is the sender, etc.) via a network. The receiver may examine the bundle and determine the type of the object (e.g., arrays, string classes, interfaces, etc.) based on the fields and/or the key-value pairs stored in the bundle. The receiver may then implement the appropriate process for reconstructing the object from the based on the fields and the corresponding key-pairs. This serialization and deserialization process may be performed for each communication transmitted between the sender and the receiver. Additionally or alternatively, when the sender communicates with the receiver, the sender may send a message via a binder that causes the receiver to send a generic callback to the sender. In some examples, if the sender does not receive the callback before a predetermined period expires (e.g., the call timed-out), the sender may output a notification that the receiver (e.g., the application executing at the receiver) is not responding. In this way, the binder may provide ANR checking that informs the user whether an error has occurred or not.

Creative Commons License

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.