如何在Java中存储非可序列化对象的引用? (机器人)

时间:2013-11-29 18:52:03

标签: java android serialization

我正在尝试使用Java for Android的一些东西。 我还是Android编程的新手,我还没有在很多时候使用Java,所以我可能会有点生疏。

所以,情况就是这样:我有一个Activity,每次按下按钮,都会创建并启动一个新的CountDownTimer。如果我关闭活动,之前启动的CountDownTimers仍将运行。我需要一种方法来从另一个Activity中恢复对ContDownTimer实例的引用。

我考虑过序列化,但抽象类CountDownTimer似乎没有实现Serializable。 (当我尝试反序列化对象时出错。此外,因为它们正在运行,这意味着它们仍然在堆上,对吧?我只需要一种方法来引用它们。我对这一点感到有点困惑序列化的话题,但那不是重点......或者是它?)

接下来的尝试将成为Android服务,但它们比Serialization更令人困惑,而且由于电池消耗以及CountDownTimers(据我所知)已经运行的事实,它看起来有点像矫枉过正在他们自己的线程(或进程?)上。所以我决定在这里访问,看看我是否正朝着正确的方向前进,然后才开始与服务世界斗争。

1 个答案:

答案 0 :(得分:2)

  

我需要一种方法从另一个Activity中恢复对ContDownTimer实例的引用。

然后他们不应该成为最初的第一个活动的一部分。将它们放在一些中央存储位置。那可能是单身人士或Service。或者,答案可能是完全转储CountDownTimer并执行其他操作。由于我们不知道你想要完成什么,很难为你提供好的建议。

  

我想过序列化

这对于CountDownTimer来说没有多大意义。

  

此外,由于它们正在运行,这意味着它们仍然在堆上,对吧?

只要您的流程在您身边。

  

我对序列化的整个主题感到有点困惑

序列化用于将对象持久保存到磁盘。这对于CountDownTimer来说没有多大意义。

  

由于电池消耗

Service本质上不消耗任何电池。您如何使用服务。

  

CountDownTimers(据我所知)已经在他们自己的线程(或进程?)上运行

不,他们没有。他们使用主应用程序线程。

  

所以我决定在这里拜访,看看我是否朝着正确的方向前进

我们无法回答这个问题,因为我们不知道您要实施的是什么。虽然CountDownTimer可能是您问题的正确解决方案的一部分,但它可能不会,更不用说其余部分。