Objects are transmitted between two androidactivities.
To transfer data between android activities, the Intent object method is mainly used.
The transfer of basic data types is quite simple, mainly through the following methods:
PutExtra method.
This is not described here.
It mainly transmits object type data.
1. The Object class must first serialize and implement the Serializable interface, and use Bundle. putSerializable (Key, Object) to complete data transmission.
2. The Object class impleme
The aidl service only supports limited data types. If you use the aidl service to transmit complex data, you need to perform further processing. The aidl Service supports the following data types:1. Java Native type2. String and charsequence3. The elements of list, MAP, list, and map objects must be data types supported by aidl. The preceding three types do not need to be imported)4. the API automatically generated by aidl needs to be imported)5. classes that implement the Android. OS.
Original URL: http://blog.csdn.net/lixiang0522/article/details/8642202The objects passed between components in Android generally implement the Parcelable interface, of course, you can also use the Java serializable interface, the former is specifically designed for Android, more efficient, below we will implement a parcelabel. 1. Create a class to implement the Parcelable interface, which is implemented as
. Instead, you should use asinterface (ibinder) for type conversion.
Note the following before writing aidl:
1. The interface name is the same as the aidl file.
2. You do not need to add access permission modifiers such as public, private, and protected before interfaces and methods, or use final or static.
3. the default types supported by aidl include the Basic Java types (INT, long, Boolean, etc.) and (string, list, MAP, charsequence). Using these types, the import declaration is n
onRestoreInstanceState to keep some temporary data.
[Java]@ OverrideProtected Parcelable onSaveInstanceState (){/** Suppose a client uses this preference type without persisting. We* Must save the instance state so it is able to, for example, keep ve* Orientation changes.*/Final Parcelable superState = super. onSaveInstanceState ();If (isPersistent ()){// No need to save instance state since it's persisten
process name confirms that the same app is under different processes and application is created multiple times. This also illustrates that in multi-process mode, components of different processes do have separate virtual machines, application, and memory space.
3. Serializable and Parcelable interfaceSerializable and Parcelable can complete the serialization of an object, which needs to be serialized
1. Methods(1) serialization is implemented using the serializable interface. Use Bundle.putserializable (Key, object); Here the Objec object needs to implement the serializable interface.(2) Realize parcelable interface serialization. Use Bundle.putparcelable (Key, Object), where object objects need to implement the Parcelable interface.2, the difference between the two:(1) When using memory,
An example of this article is the method of using intent to pass objects in Android programming. Share to everyone for your reference, specific as follows:
In the previous article, we introduced the use of intent, such as starting activities, sending broadcasts, inspiring services, and passing some data when using intent. As shown in the following code:
Intent Intent = new Intent (this,secondactivity.class);
Intent.putextra ("info", "I am Fine");
StartActivity (Intent);
When pass
. annotation. suppressLint; import android. OS. parcel; import android. OS. parcelable;/*** @ Description write an object class step: * 1. implement the Pracelable interface * 2. you need to define a Parcelable. creator CREATOR object * 3. at the same time, you need to create an aidl file * @ Author monkey * @ Date 5:22:02 on January 1, September 4, 2014 */@ SuppressLint ("ParcelCreator") public class BookI
a new task run, assuming its taskid is 201, then if you start D2 or D1 from D3, then another task is created, so If the operation step is OTHER->D2->D1, the process involves 3 tasks.Activity Pass ParametersIntent pass-through parameter types:boolean, char, byte, double,float,int, long, short basic data types and their arrayscharsequence/charsequence[], String/string[], Bundleand objects that implement Serializable or parcelableSerializable: Java provides, all classes that implement Serializabl
communication between two applications is completed through the remote Service (the Process Communication IPC ). However, there is a problem. We just passed the data of the basic type but didn't pass the data of the non-basic type such as the object. Isn't it possible to pass the data of the non-basic type? The answer is yes, of course. The following describes how to transfer an object to a broken process.
3. AIDL kill the process to pass objects
? To pass non-basic data type objects through th
(in); } @Override PublicBook[] NewArray (intsize) { return NewBook[size]; } }; @Override Public intdescribecontents () {return0; } @Override Public voidWritetoparcel (Parcel dest,intflags) {dest.writestring (booname); Dest.writeint (Pirce); }}Our idea is to define the method of manipulating book lists on the server side (Add books, query all books), and then remotely invoke these two methods on the server side of the client to manipulate the books.The following is an
course, these objects have certain conditions, the former is the implementation of the serializable interface, and the latter is the implementation of the Parcelable interface.
Many people know that there are two choices when passing objects between activity, one is parcelable and the other is serializable. But when should we use one of them?1. When using memory,
Obfuscated-keep public class com. android. vending. licensing. ILicensingService # Keep classes not Obfuscated-keepclasseswithmembernames class * {# Keep native METHOD not obfuscated native
;}-Keepclasseswithmembers class * {# Keep the custom control class public
(Android. content. Context, android. util. AttributeSet);}-keepclasseswithmembers class * {public
(Android. content. context, android. util. attributeSet, int); # Do not confuse custom control classes}-keepclassmem
Activity can jump and pass data through intent and bundles, data types that can be passed include basic data types, A string and an object that implements the Parcelable interface or serializable interface (file implements the Serializable interface):The 1.Serializable interface is implemented in Java, without overriding any methods, but the serialization and deserialization process produces a large number of intermediate variables that occupy large a
Onrestoreinstancestate (bundle) ( The incoming bundle parameters are recovered from the Onsaveinstancestate package. This method is called before an activity is killed and can revert to its previous state when the activity returns at some point in the future.For example, if activity B is enabled and is located at activity A's front end, at some point, activity a because the system reclaims the resources of the problem to be killed, a through onsaveinstancestate will have the opportunity to save
Onrestoreinstancestate (bundle) ( The incoming bundle parameters are recovered from the Onsaveinstancestate package. This method is called before an activity is killed and can revert to its previous state when the activity returns at some point in the future.For example, if activity B is enabled and is located at activity A's front end, at some point, activity a because the system reclaims the resources of the problem to be killed, a through onsaveinstancestate will have the opportunity to save
remove the binder before the binding Proxy and rebind the remote service.privatenew IBinder.DeathRecipient() { @Override publicvoidbinderDied() { ifnullreturn; 0); null; // TODO:这里重新绑定远程Service }};Next, after the client has successfully bound the remote service, set the agent for the death to Binder:mservice= IMessageBoxManager.Stub.asInterface(binder);binder.linkToDeath0)The second parameter of Linktodeath is a marker bit, which can be set directly to 0. In
How does android use AIDL Service to transmit complex data?
We all know that in Android, data in the Service can be called across processes through AIDL. There are also many instances on the Internet. However, most instances use remote calls for basic data types and seldom involve complex data calls, today, I will use an example to demonstrate how to use AIDL Service to transmit complex data.
Let's start in two steps:
Step 1: deploy our server, that is, the Service:
1: on the Service end, I firs
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.