Почему onRestoreInstanceState () никогда не вызывается

Я пытаюсь сохранить данные в своей деятельности, а затем восстановить их. Я сохраняю данные в onSaveInstanceState () , а затем пытаюсь восстановить данные в onRestoreInstanceState () .

Я устанавливаю точку останова, метод onSaveInstanceState () звонят. Но onRestoreInstanceState () или onCreate () никогда этого не делали.

Вот мои шаги:

  1. начать мое Activity .
  2. нажать 'Home кнопка на телефоне. Вызывается onSaveInstanceState () .
  3. Щелкните значок в панели запуска и снова запустите мое Activity .

В настоящее время вызывается только onRestart () . Но не onRestoreInstanceState () или onCreate () . void AppMain () {// Заполнить ...

java.lang.RuntimeException: java.lang.IllegalAccessException: 
  Class concurrent.Link$ can not access a member of class concurrent.Link
  with modifiers "private volatile"
    at java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<init>(AtomicReferenceFieldUpdater.java:189)
    at java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdater.java:65)
    at concurrent.Link$.<init>(Link.scala:106)
    ...

Таким образом, во время выполнения сопутствующий объект является concurrent.Link $ not concurrent.Link и другой класс не может получить доступ к закрытому члену другого.

НО, если я javap -p concurrent.Link

Я получаю:

Compiled from "Link.scala"
public final class concurrent.Link implements concurrent.Node,scala.ScalaObject,scala.Product,java.io.Serializable{
private final java.lang.Object value;
private volatile com.atlassian.util.scala.concurrent.Node node;
public static final boolean cas(com.atlassian.util.scala.concurrent.Link, com.atlassian.util.scala.concurrent.Node, com.atlassian.util.scala.concurrent.Node);
public static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater updater();

Итак, у меня есть все, кроме статического экземпляра AtomicReferenceFieldUpdater , объявленного в моем классе Link .

] Вопрос в том, как мне получить экземпляр AtomicReferenceFieldUpdater в Scala, который указывает на изменчивую переменную?

Единственный способ, который я нашел до сих пор, - это вернуться к Java (реализовать AbstractLink со следующим полем узла и статическим AtomicReferenceFieldUpdater ) и наследовать от того, что некрасиво.

5
задан Jed Wesley-Smith 7 April 2011 в 00:28
поделиться