将Parcelable对象发送为可序列化

时间:2016-12-20 09:42:54

标签: java android parcelable serializable

有问题的Android项目已经使用Serializable在内部模块之间传递信息。

我正在研究其中一个也使用外部库来计算导航路线的模块。

我需要将其中一个“外部”对象传递给另一个模块,这不是Serializable,所以我无法正常发送它。我之前的程序员已经在Wrapper类中的静态变量中转换了所有不可序列化的对象,我不确定这是不是一个好主意,即使模块应该始终保持活动状态。

这是Serializable包装类:

private void FwdImgChng(object sender, TappedRoutedEventArgs e)
{
    //if (currentIndex == 11)
    //{ return; }
    currentIndex++;
    if (currentIndex > 10)
    {
        currentIndex = 10;
        return;
    }

    Header.Source = new BitmapImage(new Uri("ms-appx:///Assets/LearnColor/Header/_0000_header_" + currentIndex + ".png"));
    image.Source = new BitmapImage(new Uri("ms-appx:///Assets/LearnColor/Object/ob_" + currentIndex + "_0.png"));
    prevObjBtn.Source = new BitmapImage(new Uri("ms-appx:///Assets/LearnColor/Button/prev" + currentIndex + ".png"));
    fwdObjBtn.Source = new BitmapImage(new Uri("ms-appx:///Assets/LearnColor/Button/next" + currentIndex + ".png"));
    HeaderName.Text = Headername[currentIndex];
    objNameWritten.Text = objnamewritten[currentIndex];
    objNameWritten.Foreground = Headername[currentIndex];
    mediaElement1.Source = new Uri("ms-appx:///Assets/LearnColor/Objectnamesmp3/" + currentIndex + "_0.mp3");
    mediaElement1.AutoPlay = true;
}

将道路描述为瞬态会让我失去数据,为道路编写一个完整的包装类会有太多的工作(需要构建叠加层,所以很多Geometry都在内部并且来自外部库所以我可能会忘记东西)。将整个项目更改为Parce也是不现实的。

有什么解决方案吗?真正的最好方法是将我需要的东西保存为静态吗?

2 个答案:

答案 0 :(得分:0)

尝试使用EventBus。发送Sticky事件,包含对象引用。它将被传递给每个订阅的对象,直到您明确取消该事件。

答案 1 :(得分:0)

也许您可以使用事件(http://greenrobot.org/eventbus/)将对象传递到您需要的位置。