1*ae5b1ec8SZiwei Zhang# Async Event RPC Example 2*ae5b1ec8SZiwei Zhang 3*ae5b1ec8SZiwei ZhangThis example shows you how to use the @AsyncRpc annotation of Mobly snippet lib 4*ae5b1ec8SZiwei Zhangto handle asynchronous callbacks. 5*ae5b1ec8SZiwei Zhang 6*ae5b1ec8SZiwei ZhangSee the source code in `ExampleAsyncSnippet.java` for details. 7*ae5b1ec8SZiwei Zhang 8*ae5b1ec8SZiwei Zhang## Running the example code 9*ae5b1ec8SZiwei Zhang 10*ae5b1ec8SZiwei ZhangThis folder contains a fully working example of a standalone snippet apk. 11*ae5b1ec8SZiwei Zhang 12*ae5b1ec8SZiwei Zhang1. Compile the example 13*ae5b1ec8SZiwei Zhang 14*ae5b1ec8SZiwei Zhang ./gradlew examples:ex3_async_event:assembleDebug 15*ae5b1ec8SZiwei Zhang 16*ae5b1ec8SZiwei Zhang1. Install the apk on your phone 17*ae5b1ec8SZiwei Zhang 18*ae5b1ec8SZiwei Zhang adb install -r ./examples/ex3_async_event/build/outputs/apk/debug/ex3_async_event-debug.apk 19*ae5b1ec8SZiwei Zhang 20*ae5b1ec8SZiwei Zhang1. Use `snippet_shell` from mobly to trigger `tryEvent()`: 21*ae5b1ec8SZiwei Zhang 22*ae5b1ec8SZiwei Zhang snippet_shell.py com.google.android.mobly.snippet.example3 23*ae5b1ec8SZiwei Zhang 24*ae5b1ec8SZiwei Zhang >>> handler = s.tryEvent(42) 25*ae5b1ec8SZiwei Zhang >>> print("Not blocked, can do stuff here") 26*ae5b1ec8SZiwei Zhang >>> event = handler.waitAndGet('AsyncTaskResult') # Blocks until the event is received 27*ae5b1ec8SZiwei Zhang 28*ae5b1ec8SZiwei Zhang Now let's see the content of the event 29*ae5b1ec8SZiwei Zhang 30*ae5b1ec8SZiwei Zhang >>> import pprint 31*ae5b1ec8SZiwei Zhang >>> pprint.pprint(event) 32*ae5b1ec8SZiwei Zhang { 33*ae5b1ec8SZiwei Zhang 'callbackId': '2-1', 34*ae5b1ec8SZiwei Zhang 'name': 'AsyncTaskResult', 35*ae5b1ec8SZiwei Zhang 'time': 20460228696, 36*ae5b1ec8SZiwei Zhang 'data': { 37*ae5b1ec8SZiwei Zhang 'exampleData': "Here's a simple event.", 38*ae5b1ec8SZiwei Zhang 'successful': True, 39*ae5b1ec8SZiwei Zhang 'secretNumber': 12 40*ae5b1ec8SZiwei Zhang } 41*ae5b1ec8SZiwei Zhang } 42