3

Android 用のマップ レンダリング アプリケーションを開発しています。地図データは約1.1Gbとかなり大きいです。.apk のサイズには市場と携帯電話の両方に制限があるため、アプリケーションの起動時にダウンロードすることをお勧めします。

これは私が現在使用しているパターンです:
1. メイン アクティビティ (マップのレンダリングに使用) は、データが利用可能かどうかを確認し、そうでない場合はダウンロード アクティビティを開始します
2. ダウンロード アクティビティはローカル サービスを開始します
3. サービスは zip ファイルをダウンロードします4.
サービスはイベントをダウンロード アクティビティと通知に送信します。

電話とネットワークによっては、プロセス全体に 30 分から数時間かかる場合があるため、サービスを生成します。

しかし、プログラムのインスタンスが 1 つしか実行されていないことを確認するのに苦労しています。launchmode プロパティのすべての組み合わせを試してみましたが、役に立ちませんでした。

ご存じのとおり、実行中の 2 つのインスタンスはダウンロード/解凍をクラッシュさせます。

これは本当にイライラします!現在、sdcardファイルロックへの醜い読み取り/書き込みを行っており、ほとんどの場合、1つのインスタンスのみが実行されていることを確認しています。

Android 1.6以降を対象としています。

4

2 に答える 2

1

複数のインスタンスの問題を回避するには、ローカル サービスではなくリモート サービスを使用する必要があります。このようにして、アプリケーションに必要なデータをダウンロードするサービスのインスタンスを 1 つだけ持つことができます。

于 2011-02-08T13:21:06.607 に答える
0

モバイルデバイスへの 1.1GB は膨大な量のデータです。Wi-Fiでも、おっしゃる通り接続状態が良くないと時間がかかりますし、スマホの性能にも影響します。ユーザーエクスペリエンスが悪いと予想されます-ダウンロード中は携帯電話の速度が遅くなり、大量のデータの解凍中にはおそらく使用できなくなり、データがダウンロードされるまでアプリ自体はまったく使用できなくなります.いっぱいです (数回の再試行が必要になる場合があります)。

私だったら、おそらく地理的な地域ごとにデータを分割し、パッケージでダウンロードする方法を探しているでしょう。こうすることで、パッケージのダウンロードが失敗した場合にアプリを再試行でき、ユーザーはアプリをある程度使用することができます。あなたのアプリは地図アプリだとおっしゃいましたので、おそらくユーザーの場所/国を特定し、最も適したパッケージを最初にダウンロードできます。これが機能するかどうかは、ユーザーがすべてのデータなしでアプリを使用する方法がまったくないかどうかにかかっています.

問題は、Android アプリがいつでも GC される可能性があることです。そのため、バックグラウンドで集中的な作業を行うアプリを比較的長時間実行するという要件が競合しています。ユーザーが行う必要があるのは、ブラウザーのような大きなアプリを開くだけで、サービスがシャットダウンされる可能性があります。大量のダウンロード トランザクションを 1 回行うだけで、窮地に追い込まれます。

または、物理的に SD カードでデータを提供していただけますか? これは優れたソリューションではありませんが、データセットのサイズを考えると検討する価値があるようです。

于 2011-02-08T13:13:53.443 に答える