検索

ホームページ  >  に質問  >  本文

android - 如何避免activity再次启动时又一次初始化数据

本人写了一个activity初始化了一些数据,而在另一个activity改变数据后返回时,发现数据又再一次被初始化,有什么办法可以改变这种情况吗?


初始化数据是在onCreate()

PHP中文网PHP中文网2772日前1233

全員に返信(13)返信します

  • PHP中文网

    PHP中文网2017-04-17 17:36:18

    私はこのように理解していますが、正しく理解できますか?
    たとえば、2 つのアクティビティ A と B には、A と B の両方が変更できるデータがあります。データのこの部分を共有データと呼びます。 。
    最初に A が共有データを初期化し、次に A が B を開始し、B が共有データを変更します。 B が戻ってきたとき、A の共有データをチェックしたところ、それがまだ初期初期化データであり、期待していた B の変更されたデータではないことがわかりました。
    考えられる理由は次のとおりです: A が B を開始した後、A が破棄されました。これはログ情報を追跡することで確認できます。
    B が戻るとシステムは再び A を起動しますが、A は再度 onCreate() を実行し、共有データはこの時点で見ると元の初期化データのままです。
    解決策: onSavedInstance() を使用して共有データを保存し、保存された共有データを onCreate() で使用します。
    共有データの例として文字列 FileUri を使用します。

    データの保存場所:

    リーリー

    保存したデータを使用する:

    リーリー

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:36:18

    まず、初期化データが onCreate にのみ配置されているかどうかを確認する必要があります。その場合、このアクティビティは異常な状況によりリサイクルされる必要があります。このアクティビティを再度入力すると、データが再初期化されます。

    返事
    0
  • PHPz

    PHPz2017-04-17 17:36:18

    初期化させなければ生きていればOKです。後続のアクティビティのデータ操作は最初のアクティビティと通信していればOKです。

    返事
    0
  • キャンセル返事