2011-07-24 12 views
1

私は株のリストの価格に従って、アプリを書いてみたいです。 銘柄のリストを含む3つの活動があるでしょう:私はmyStocksActivityに含む 私のAndroidアプリのアーキテクチャに関するヘルプ

  • winnersLoosersStocksActivityを含んリストに追加することができ銘柄のリストを含む
  • searchedStocksActivityに興味がある銘柄を含む

    • myStocksActivityその日の最高または最低の業績を持つ株式のリスト。

    私は削除したり、そのリストから株式を追加し、myStocksActivityにsearchedStocksActivityまたはwinnersLoosersStocksActivityに表示される株式を追加することができるように、myStocksActivityに株式のリストを保持したいと思います。

    もう1つの課題:株式の価格は、アプリの設定に応じてX分ごとに更新する必要があります。価格は、アプリの実行中にのみ更新する必要があり、現在見ているリストの価格を更新する必要があります。

    現時点では私のアーキテクチャはあまり良くありません。ほとんどのロジックはmyStocksActivityに含まれていますが、それは良いことではありません。

    在庫リストの更新をサービスに移すことを考えていましたが、アプリケーションが実行されていないときにこのサービスを実行したくありません。

    あなたはどう思いますか?私の問題は明確ですか?ありがとうございました !

  • 答えて

    0

    メインアクティビティが一時停止(または破棄)されるときはいつでも、StopService(blabla);に電話してください。 あなたはそれをサービスとして保持することができ、バックグラウンドでは実行されません。

    +0

    ありがとう、ありがとうございます。私はAndroidの開発に多くの経験がないので、完全なアーキテクチャのアイデア/例を探していました。 たとえば、引用符のリストをどのように扱うべきですか? winnersLoosersStocksActivityから在庫を追加するにはどうすればよいですか? ect ... – user860302

    +0

    さて、今、あなたはそれほどコード化するように私たちに求めているのですか? – dasfima

    0
    1. 私はハンドラを置く株式のクラスを作成し、そこに
    2. に更新ロジックを保存する - 株式クラスのインスタンスを保持し、更新するために、それらを伝えるためにセットをループするもの - のいずれかで純粋に静的なメソッドと変数を持つ独自のクラス、または静的メソッドを持つストッククラスのクラスなどです。
    3. サービスにタイミング情報が含まれ、static update()メソッドが呼び出されます
    4. 株を表示するアクティビティは、onCreate/onDestroyまたはonUpdate/onPauseでサービスを開始/停止します
    5. 同じアクティビティは、ロードするハンドラクラスを指示し、そのリストを表示に使用します。

    もう1つ:サービスを使用しないことをお勧めします。 AsyncTaskを使用します。サービスは実際にUIスレッドで実行されるため、更新中に長時間実行されるループがある場合、UIはフリーズします。 AsyncTaskはスレッドを開始し、UIをブロックしません。

    1

    私があなただったら、最初にドメインモデルを設計してビルドします。これは、UIとは無関係に、あなたが株式で望むものすべてをやり遂げることを可能にするクラスのセットになるはずです。また、これらのクラスに直接データ永続性を組み込む必要があります(このビットはSQLiteを使用することをお勧めします)。

    作業モデルを作成したら、その上にUIを作成します。 MVPデザインパターンはAndroidでうまく機能します。

    アクティビティをビューとして実装します。これは、データを提示し、UIイベントをキャプチャし、これらのイベントをPresenterインスタンスに委譲し、モデルを通信/操作し、それに応じてビューを更新します。たとえば、

    MyStocksViewは株価のリストと株価の最新動向(または何でも)をユーザに提示することができます。 MyStocksViewには、ユーザーインターフェースを構成する実際のウィジェットが含まれています。また、ユーザーがボタンをクリックしたときなど、さまざまなUIイベントのイベントリスナーとハンドラーとしても機能します。 MyStocksPresenterクラスのインスタンスも含まれている必要があります。

    ユーザーがボタンをクリックすると、「在庫を取り除く」と言うと、MyStocksViewのイベントハンドラはpresenter.removeStock(id)のようにプレゼンタインスタンス内のメソッドを起動し、モデルを更新しますメモリ内のデータ構造とデータベースから)、最後にすべてが成功した場合はビューが更新されます。基本的にプレゼンテーション層とデータモデルの間の中間的な人間として機能します。

    x分ごとの自動更新に関して、私はAsyncTaskを使ってこれを処理します。あなたがアプリケーションの実行中にこのようなことが起こるようにするには、サービスを使用することにはあまり意味がありません。

    +0

    こんにちは、あなたの答えをありがとう。 私はMVPのパターンを見て、ここでさらに質問をします。 もう一度ありがとうございます! – user860302

    関連する問題