2012-01-05 4 views
2

私の過去2つの質問は短く詳細ではなかったので、今回はベストを尽くします。私は約430音の大きな響板を持っています。それは非常に大きいです、私はいくつかのデバイスで2つのサウンドマネージャを作成する必要があります。とにかく、読み込み画面で、私はAsyncTaskを実装しようとしています。私は一般的にそのタイプとその4つのステップを理解していますが、パラメータを理解できません。参考のために単純なAsyncTaskを次に示します。私はバックグラウンドで実行する必要がどのようなAsynctaskを作成して読み込み画面のマネージャーにサウンドをロードする方法

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
    protected Long doInBackground(URL... urls) { 

    } 
    return null; 
} 

protected void onProgressUpdate(Integer... progress) { 

} 

protected void onPostExecute(Long result) { 

} 
} 

はこのように私のマネージャーにサウンドを追加することです: SoundManager2.addSound(415、R.raw.rubber)。

これは私の3番目の質問ですので、他の情報が必要な場合は、お気軽にお問い合わせください。私はこのスレッドを今後20分間見ていきます。あなたが与える例で

答えて

0

...

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {...} 

3種類のURL、(PARAMS、進捗状況、結果として知られている)整数とロングはあなたがそれらをする必要が何もすることができます。

最初(URL)は、AsyncTaskインスタンスの.execute(<params>)メソッドに渡す必要のあるパラメータのタイプです。より正確には、doInBackground()メソッドを見ると、の配列を受け入れることを意味するURL...が表示されます。あなたは一つだけURLを渡す必要がある場合でも、あなたはまだあなたがurls[0]urls[1]などまたはfor (URL u:urls)のようなものとしてURLのアクセスdoInBackground(URL... urls)方法では単一項目配列

URL[] myURLs = new URL[] {<comma-separated URLs here>}; 
new DownloadFilesTask().execute(myURLs); 

としてそれを渡す必要があります。

この例の第2の汎用タイプ(Integer)は、onProgressUpdate(Integer progress)で期待されるタイプです。これも配列として渡す必要があります。たとえば、10個のファイルをダウンロードする場合は、各ファイルがダウンロードされた後にファイルを呼び出します。たとえば、1つのファイルが正常にダウンロードされたことを示す場合はmyProgress[0] = 1となります。これにより、ある種の進行状況ダイアログを更新することができます。

最後に、第3ジェネリックタイプ(Long)が内部で使用され、タイプonDoInBackground(...)が返され、onPostExecute(Long result)に渡されます。これは配列ではなく単一の結果であることに注意してください。どのような結果になるかは、onPostExecute()の動作に依存します。

私はあなたが一般的なVoid(ノート大文字)を含む任意の型を使用することができます言ったように...あなたはまだpublishProgress()を呼び出すことができますが、あなたは.execute()には何も渡していない。この場合

private class MyAysncTask extends AsyncTask<Void, Void, Void> 

(へonProgressUpdate())、データを渡すことはできません。同様に、onPostExecuteは実際の結果データを受信しません。

関連する問題