Reinflateコマンド


Reinflateコマンド

更新された設定プロパティを使用して現在のドキュメントを再インフレートします。Alexaは、画面に最初にドキュメントを表示したときと同じプロセスに従って、ドキュメント全体を再作成します。Alexaは、新しいデバイス設定に一致するenvironmentviewportの定数を使って、更新された新しいデータバインディングコンテキストを作成します。

プロパティ

Reinflateコマンドには、共通のコマンドプロパティに加えて、以下の表に示すプロパティがあります。typeプロパティはReinflateに設定します。

コマンドを実行するために値が必要なプロパティの場合、以下の表の「デフォルト」列に「必須」と表示されています。それ以外の場合はデフォルト値が表示されますが、デフォルト値がないこともあります。

プロパティ デフォルト 説明

preservedSequencers

コマンドシーケンサーの配列

[]

再インフレート中に保存する名前付きシーケンサーの配列です。

ドキュメントレベルおよびコンポーネントレベルのonMountコマンドは、ドキュメントの再インフレート後に実行されます。

Reinflateコマンドは通常モードと高速モードの両方で実行されます。

再インフレートを使用してタブレットをサポートする方法の詳細については、サイズ変更が可能なタブレットなどのデバイスをサポートするを参照してください。

preservedSequencers

preservedSequencersプロパティでは、再インフレート中および再インフレート後も実行を継続するコマンドシーケンサーの配列を指定します。定義したシーケンサーは保存できます。デフォルトのMAINシーケンサーは保存できません。

たとえば、ドキュメントでSpeakListコマンドが呼び出されるとします。Alexaがリスト項目を読み込むと、ユーザーのデバイスで設定の変更がトリガーされ、Reinflateが呼び出されます。このシナリオのデフォルトの動作では、ドキュメントが再インフレートされると、実行中のすべてのコマンドが停止し、SpeakListのオーディオ再生が停止します。

代わりにこのシナリオでオーディオ再生を続けるには、次の操作を行います。

  • SpeakListコマンドのsequencerを定義します。
      {
        "type": "Speaklist",
        "componentId": "myListToSpeak",
        "start": 0,
        "count": 10,
        "sequencer": "SpeakListSequencer"
      }
    
  • ReinflateコマンドのpreservedSequencersプロパティを、定義したシーケンサーに設定します。
      {
        "type": "Reinflate",
        "preservedSequencers": [ "SpeakListSequencer" ]
      }
    

個々のコマンドが再インフレートを処理する方法の詳細については、特定のコマンドの「再インフレート時の処理方針」セクションを参照してください。

拡張機能のコマンドでは、保存はサポートされません

存在するターゲットコンポーネント

保存されたシーケンサーのコマンドは、再インフレートされた階層内に存在するコンポーネントをターゲットにするようにします。コンポーネントのidを指定し、preserveプロパティを使用してコンポーネントのプロパティとバインディングの値を保存します。

保存されたシーケンサーが即時に解決されないコマンド(AnimateItemScrollなど)を実行する場合、再インフレートされた階層内にターゲットコンポーネントが存在していれば、コマンドは再インフレート後も継続されます。

保存されたシーケンサーで実行されているコマンドのうち、存在しないコンポーネントをターゲットとするコマンドは、再インフレート時に無視されます。

たとえば、次のコマンドが「EXAMPLE_SEQUENCER」というシーケンサー(t = 0)で実行されているとします。

{
  "type": "Sequential",
  "sequencer": "EXAMPLE_SEQUENCER",
  "commands": [
    {
      "type": "AnimateItem",
      "componentId": "MyComponent"
      "duration": 1000,
      "easing": "linear"
      "value": {
        "property": "opacity",
        "from": 0,
        "to": 1
        }
    },
    {
      "type": "SpeakItem",
      "componentId": "MyMissingComponent"
    },
    {
      "type": "SendEvent",
      "arguments": [ "終了" ]
    }
  ]
}

t = 300ミリ秒になると、「EXAMPLE_SEQUENCER」シーケンサーを保存するReinflateコマンドが実行されます。再インフレート後、再インフレートされた階層には、IDがMyComponentのコンポーネントはありますが、IDがMyMissingComponentのコンポーネントはありません。AnimateItemが終了する前に再インフレートが発生したため、MyComponentコンポーネントの不透明度は0.3に設定されています。AnimateItemコマンドは、中断したところから続行され、700ミリ秒間実行されます。

t = 1秒になると、SpeakItemコマンドはIDがMyMissingComponentのコンポーネントを見つけられず、制御を返します。その後、SendEventコマンドが実行されます。

ドキュメントのonMountハンドラーまたはコンポーネントのonMountハンドラーで指定されたコマンドは、再インフレート後に実行されます。これらのコマンドは、同じ名前の保存されたシーケンサーをすべて終了させます。

再インフレートの詳細については、サイズ変更が可能なタブレットなどのデバイスをサポートするを参照してください。

Reinflateをほかのコマンドと組み合わせる

Reinflateコマンドを実行すると、APL内のほかのすべての処理(preservedSequencers配列で指定されていないシーケンサーで実行中のコマンドを含む)が停止します。シーケンサーとコマンドのシーケンス実行の詳細については、コマンドのシーケンス実行を参照してください。

たとえば、SendEventReinflateを同じハンドラーで実行するには、最初にSendEventを呼び出します。以下の例では、UserEventリクエストをスキルに送信してからドキュメントを再インフレートしています。

{
  "onConfigChange": [
    {
      "type": "SendEvent",
      "sequencer": "ConfigSendEvent",
      "arguments": [
        "APLドキュメントの再インフレート"
      ]
    },
    {
      "type": "Reinflate"
    }
  ]
}

コマンドを逆の順序で記述すると、SendEventは実行されません。onConfigChangeハンドラーは高速モードで実行されるため、この例のSendEventコマンドではsequencerを定義しています。高速モードでは、SendEventは無視されます。


このページは役に立ちましたか?

最終更新日: 2025 年 12 月 04 日