2017-03-09 63 views
0

我想将一个类引用传递给intent以便让我的类的实例在Activity中加载。 请考虑我写了“参考”类,所以它不应该是另一个实例。遵循所有说明,我发现我能够通过一个班,但最后是另一个例子。Android:如何将类引用传递给intent

intent.putExtra("idletime", idle); 

空闲是我的班级我想通过作为参考。 和在那里我得到它:

idle_ = getIntent().getParcelableExtra("idletime"); 

但似乎引用是为我的类的新实例,而不是同一个类实例我试图超越。

这是类的定义,但我认为不是那么重要:

public class idletime extends AsyncTask<Object, Integer, Boolean> implements Parcelable {} 

有事吗?

+0

你不能通过意图传递引用,它将是它的副本 –

回答

3

但似乎引用是为我的类的新实例,而不是我尝试通过的类实例。

这是一个正确的行为,putExtra将你的类转换成二进制形式(连载),然后getParcelableExtra将从二进制形式反序列化类,并通过这种方式创建一个新的实例。

+0

我很高兴知道这是预期..但我的需要是通过参考原始类..我可以做到这一点吗?我通常在C++中工作,java有时候对我有些黑暗。 –

+0

@AndreaGuglielmi Java不允许直接访问指针,即使它发生了,如果在序列化和反序列化之间垃圾收集对象,会发生什么?如果你想要这么多的原始实例,你应该创建一个'Map'并且序列化一个对象而不是对象本身。 – user1643723

+0

@AndreaGuglielmi你将不得不以某种类的静态字段的形式存储此引用,最好是派生的应用程序 - 然后以与在C++中相同的方式访问此字段,您将访问类的静态变量。你需要小心,因为Android可以在任何时候杀掉你的进程,然后所有的静态字段都会丢失。例如,看看这里:http://stackoverflow.com/questions/18002227/why-extend-an-application-class – marcinj