0

OK、私はしばらくの間この問題を抱えていました。検証を行い、写真をウェブサイトにアップロードするカメラアプリを開発しています。

私の問題は、アクティビティのチェーンを作成して、それぞれが前のアクティビティの終了時に結果を返すか、結果に応じて次のアクティビティを生成するメイン アクティビティに各アクティビティを戻すかという問題に直面し続けることです。

例を次に示します。メイン アクティビティには、カメラ プレビューを起動できるフォト ギャラリーが表示されます。写真をキャプチャした後、別のアクティビティが開き、その写真を保存することを確認できます。確認後、アップロードの進行状況を表示する別のアクティビティが表示されます。これは、startactivityforresults のチェーンとして実装できます。

ギャラリー -> カメラ -> 検証 -> アップロード -> 検証 -> カメラ -> ギャラリー

または次のように:

ギャラリー -> カメラ

カメラ -> ギャラリー

ギャラリー -> 検証

検証 -> ギャラリー

ギャラリー -> アップロード

アップロード -> ギャラリー

4

2 に答える 2

1

アクティビティを使用してアップロードの進行状況を表示しないでください。ProgressDialog を使用するか、バックグラウンドで操作を IntentService にオフロードします。アップロードを試みる前に、必ずネットワーク接続を確認してください。

保存を「検証」する代わりに、保存を自動的に行い、ユーザーがそれを「元に戻す」ことができるようにすることができます。UX ガイドラインでは、特に小さなデバイスでは、インタラクションが少ないほど良いことが示唆されています。

また、すべての写真を「セッション」からローカル ストレージに保存し、ユーザーが後で、または非同期でアップロードできるようにすることもできます。

それに加えて、ユーザーがステップ間で自由に前後に移動できるようにし、各ステップでその状態を保持する場合は、おそらく個別のアクティビティ/フラグメントが必要です。

要するに、まずユーザーが何をするかについて考えることに時間を費やす必要があります。ユーザーがアプリをどのように使用したいかについて、あいまいなモデルができたら、それを実現するように設計します。多くの開発者が、API の理解に基づいてアプリを構築することを急いでいます。そのアプローチには限界があります。

于 2012-12-13T19:15:24.693 に答える
0

activity を閉じるたびに activity.finish() を呼び出しましたか? AsyncTask クラスを使用してネットワーク通信を実行し、アップロードの進行状況バーを表示してから、別のアクティビティを開始しますか?

AsyncTask クラスhttp://developer.android.com/reference/android/os/AsyncTask.html は、このような操作を行うのに本当に役立ちます: ActivityA -> ネットワーク接続と操作 (バックグラウンドで実行) -> プログレス バーの表示またはネットワーク通信の実行中(あなたの場合は写真のアップロード中)のようなもの - > AsyncTaskのonPostexecute()メソッドで別のアクティビティを開始してください!

これは、アクティビティからの移行を安定させ、アプリを安全に動作させるのに非常に役立ちます。

これがあなたの質問に答えることを願っています!

于 2012-12-19T00:01:35.263 に答える