Android 自定义意图 class
Android custom Intent class
我想将一个复杂对象从一个 Activity 发送到另一个,所以这个复杂对象不能被序列化,因为这个对象中的一些字段是系统 classes 并且本机不可序列化。这就是为什么我想创建我的自定义 class 命名为 "MyIntent" 继承自 android.content.Intent,通过这种方式,我可以将任何类型的对象放入我的自定义 Intent 中。但是,在第二个 activity、getIntent() 方法 returns android.content.Intent 实例中,不是 MyIntent 实例。我不明白为什么,也许我没有正确实施android.content.Intent class。
public class MyIntent extends Intent
{
}
//starting activity
MyIntent intent = new MyIntent();
intent.setClass(context, SecondActivity.class);
context.startActivity(intent);
//inside of onCreate() of SecondActivity
Intent i = getIntent();
i instanceof MyIntent = false
startActivity()
涉及进程间通信,即使您正在启动的 activity 在同一个应用程序和同一个进程中也是如此。 Android 将忽略您的子类,因为处理 startActivity()
请求的 OS 进程不能使用您的子类,因为它在您的应用程序中,而 OS 进程不是您的应用程序.并且,将启动 activity 请求返回给您的进程的 IPC 将不知道您的子类的任何信息。
或者:
将这些组合成一个activity(例如,使用两个片段),或
使用某种单例数据管理器,这两个活动都可以使用
我想将一个复杂对象从一个 Activity 发送到另一个,所以这个复杂对象不能被序列化,因为这个对象中的一些字段是系统 classes 并且本机不可序列化。这就是为什么我想创建我的自定义 class 命名为 "MyIntent" 继承自 android.content.Intent,通过这种方式,我可以将任何类型的对象放入我的自定义 Intent 中。但是,在第二个 activity、getIntent() 方法 returns android.content.Intent 实例中,不是 MyIntent 实例。我不明白为什么,也许我没有正确实施android.content.Intent class。
public class MyIntent extends Intent
{
}
//starting activity
MyIntent intent = new MyIntent();
intent.setClass(context, SecondActivity.class);
context.startActivity(intent);
//inside of onCreate() of SecondActivity
Intent i = getIntent();
i instanceof MyIntent = false
startActivity()
涉及进程间通信,即使您正在启动的 activity 在同一个应用程序和同一个进程中也是如此。 Android 将忽略您的子类,因为处理 startActivity()
请求的 OS 进程不能使用您的子类,因为它在您的应用程序中,而 OS 进程不是您的应用程序.并且,将启动 activity 请求返回给您的进程的 IPC 将不知道您的子类的任何信息。
或者:
将这些组合成一个activity(例如,使用两个片段),或
使用某种单例数据管理器,这两个活动都可以使用