1

そのため、最初にタブを使用するバージョンのアプリを作成しました。tabsを使用して、ページに移動すると、ビューが初めて開始され (API からデータを取得して表示)、そこから移動して戻ってきたときに、何もリロードする必要がなく、基本的に残っていました。コントローラーが再び実行されなかったためです。

それ以来、Ionic2 サイド メニュー スターターを実装しましたが、問題なくセットアップされているようです。しかし、たとえば、ポッドキャスト ページに移動してトラックを再生すると、別の場所に移動してもトラックが再生され続けます (これは問題ありません)。ただし、ポッドキャストのページに再度移動すると、まったく新しいインスタンスのように表示されます。トラックが再生されていないと表示され、開始時にプログレス バーが表示され、もう一度再生を押すと、そのトラックの 2 つのインスタンスが再生されます。同時に。基本的に、コントローラー全体が新しいインスタンスを起動します。したがって、これは、ページに移動するたびに HTTP get リクエストが行われていることも意味します (これは、そのために何らかのキャッシュを設定すればそれほど問題ではないと思いますが、主な煩わしさはポッドキャストの進行状況/状態の問題です) )。

ここにヒントやアドバイスはありますか?

ありがとう!

4

1 に答える 1

1

一般的に言えば、それを避けるために共有サービスを使用します。サービスを使用し、それを App コンポーネントの providers 配列に含めることで、そこにいくつかの情報を保存でき、アプリケーション全体で利用できるようになります (シングルトンになります)。

しかし、これを段階的に行いましょう:

しかし、たとえば、ポッドキャストのページに移動してトラックを再生すると、別の場所に移動してもトラックが再生され続けます (これは私にとっては問題ありません)。

この場合、didLeave()メソッドを使用できるため、トラックを停止できます。この方法の詳細については、こちらを参照してください。トラックを停止するだけでなく、(たとえば)共有サービスに、あなたが聴いていたトラックの現在の時点と、おそらくあなたが聴いていた曲の ID も保存します。

ただし、ポッドキャストのページに再度移動すると、まったく新しいインスタンスのように表示されます。トラックが再生されていないと表示され、開始時にプログレス バーが表示され、もう一度再生を押すと、そのトラックの 2 つのインスタンスが再生されます。同時に。基本的に、コントローラー全体が新しいインスタンスを起動します。

そのため、もう一度そのページに戻ると、willEnter()メソッドを使用して、曲の ID が以前に聴いていたものと同じかどうかを確認できます。同じ場合は、保存された情報を使用してポッドキャストの状態を設定できます (設定されている可能性があります)。プログレス バーに保存した値が表示される、再生ボタンの代わりに一時停止ボタンが表示される、など)。

したがって、これは、ページに移動するたびに HTTP get リクエストが行われていることも意味します (これは、そのための何らかのキャッシュを設定した場合はそれほど問題ではないと思いますが、主な煩わしさはポッドキャストの進行状況/状態の問題です) )。

また、曲の ID を使用して、HTTP リクエストの量を減らすこともできます。今聴きたいポッドキャストが、以前聴いていたポッドキャストと同じである場合は、http リクエストを実行しないようにすることができます。

これらの項目の一部がアプリケーションのコンテキストで意味をなさない場合は申し訳ありませんが、それらはそれらの問題を解決するのに役立つ可能性のあるアイデアにすぎません.

于 2016-08-11T21:03:32.747 に答える