2016-10-20 7 views
6

目標:手渡し描画/絵画/保存

私は、私は彼らに電子メールを送信することができるようにPDFファイルからビットマップ上/書き込み/ペイントを描き、それらを一緒に保存したいです。

詳細:

私は今、5-20ページそれぞれを含む複数のPdfのファイルを持っているがpdfsからビットマップを抽出し、ViewPagerで断片的にそれらをロードし、私はそれらを介してスワイプし、書き込み/ドローまたは何でもすることができます ていますが欲しいです。保存/ビットマップの現在の状態を復元するには私はonSaveInstanceStateを使用しています。 この方法で、前後にスワイプしながらビットマップの最後の段階を取得できます。

このような何か:

@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putParcelable("Bitmap", bitmap); 
    } 

問題:

ユーザープレスがメールボタンを送信し、私は彼が編集したIEであるにかかわらず、どのページのすべての画像を保存することができるはずですページ5から10 そして今彼は10ページ目にあり、送信ボタンを押すと、編集したすべての画像を取得できるはずです。

問題2:私は画像の数を述べてきたように

は約5〜20であり、onSaveInstanceState状態を保存すると、素晴らしい作品が、それはラム内のアプリのメモリを増やし続け、そして10日にアプリがクラッシュアプリサイズが150Mbsになる画像

しかし、イメージを束ねてonSaveInstanceStateに保存することも必要です。これは、ユーザーがスワイプしてイメージをより速く読み込むためです。

だから私は考えていたが、我々は5ページが をスクロールしてメモリをクリア発言した後、私たちはディスクにイメージを書き込むことができ、カスタムバンドル クラスを作成したときに、ユーザメモリに戻すディスクからそれを読むことができますどのような方法があります はスクロールバックしていますか?これは合理的に聞こえるでしょうか?

私が試してみました何

をビットマップは別々の断片にロードされているとおり、私はOnDestroyに外部ストレージにビットマップを保存しようとしましたが、ディスクへのビットマップを保存すると、小さな仕事ではありませんように、それが取りますユーザーがAsyncTask を使用していますが、フラグメント間でビットを高速にスワップすると、ビットマップをOnDestroyに保存するのは便利な方法ではありません。

これは私が質問をしている理由で、状況をより良く理解してくれて、もっと便利な方法でこれを達成するのに役立ちます。

このような状況にどう対処することができますか?

注:

あなたがトラブルの状況を理解しているし、より多くの情報が私にコメントを残して、私は質問を更新しますが必要な場合。

おかげ

+0

私はあなたに次の質問があります。 1.レイアウトの幅/高さに応じて画像を縮小し、ビューページに表示していますか?そうしなければ(ビットマップメモリ​​消費を減らす)必要があります。 – HourGlass

+0

2.各画像にキャンバスがあり、その上に何かをペイントします。ユーザーが次の画像にスワイプしたときに画像に変更を保存します。 (この方法は画像のサイズを大きくします)。 – HourGlass

答えて

0

は私が私は今、この問題の解決を見ています方法について説明しましょう。

(元のビットマップのすべての変更のために同一の)いくつかのID編集ビットマップを取りServiceがあるべき、キューおよびそれが外部ストレージに持続そのキューの各項目に追加します。これは、タスクを実行する(Runnableである)Executorインスタンスを制限しており、Serviceは、Futureというビットマップ識別子のマップを作成します。したがって、新しいBitmapが来たときには、Serviceが存在していれば、マップをチェックし、待機中のタスク(同じ元のビットマップ)を置き換えます。

これにServiceというタスクを、destroyItemインターセプタFragmentStatePagerAdapterから送信できます。

ユーザーが[保存]ボタンをクリックすると、編集済みのすべてのビットマップをこのServiceに残して、完了を待つだけです。

+0

私は同じことを考えています。あなたは[タップ](http://square.github.io/tape/)をどう思いますか? – Max

+0

@MaxRockwoodは、Androidのサービスの周りにフラットなラッパーのように、よく見える、正方形は、ほとんど常に良いものを考えを作成します。しかし、私は前にそれを使用していない – Beloo

+0

ええ、キューシステムは、私が持っている状況に関して有望そうだ、私はそれをショットし、更新を投稿します。 – Max