Книга: Beginning Android
Write the AIDL
Write the AIDL
IDLs are frequently written in a “language-neutral” syntax. AIDL, on the other hand, looks a lot like a Java interface. For example, here is the AIDL for the IWeather
:
package com.commonsware.android.service;
// Declare the interface.
interface IWeather {
String getForecastPage();
}
As with a Java interface, you declare a package at the top. As with a Java interface, the methods are wrapped in an interface declaration (interface IWeather { ... }
). And, as with a Java interface, you list the methods you are making available.
The differences, though, are critical.
First, not every Java type can be used as a parameter. Your choices are:
• Primitive values (int
, float
, double
, boolean
, etc.)
• String
and CharSequence
• List
and Map
(from java.util
)
• Any other AIDL-defined interfaces
• Any Java classes that implement the Parcelable
interface, which is Android’s flavor of serialization
In the case of the latter two categories, you need to include import statements referencing the names of the classes or interfaces that you are using (e.g., import com.commonsware.android.ISomething
). This is true even if these classes are in your own package — you have to import them anyway.
Next, parameters can be classified as in
, out
, or inout
. Values that are out or inout
can be changed by the service and those changes will be propagated back to the client. Primitives (e.g., int
) can only be in
; we included in for the AIDL for enable()
just for illustration purposes.
Also, you cannot throw any exceptions. You will need to catch all exceptions in your code, deal with them, and return failure indications some other way (e.g., error code return values).
Name your AIDL files with the .aidl
extension and place them in the proper directory based on the package name.
When you build your project, either via an IDE or via Ant, the aidl
utility from the Android SDK will translate your AIDL into a server stub and a client proxy.
- Forced writes - палка о двух концах
- Forced Writes
- 4.4.4 The Dispatcher
- About the author
- Chapter 7. The state machine
- Appendix E. Other resources and links
- Example NAT machine in theory
- The final stage of our NAT machine
- Compiling the user-land applications
- The conntrack entries
- Untracked connections and the raw table
- Basics of the iptables command