私はAsyncTaskを拡張するカスタムDownloadFilesクラスを持っています。アプリは起動し、デフォルトのURLとしてAsyncTaskをバックグラウンドで開始します。それらの各のonClickイベントは現在DownloadFilesインスタンスをキャンセルし、別のURLで新しいものを作成する必要があります - UIで、私はボタンの数を持っています。 DFTAsyncTaskをキャンセルして、ワンクリックで新しいインスタンスをインスタンス化するにはどうすればよいですか?
private OnClickListener categoryClick = new OnClickListener(){
public void onClick(View view) {
dft.cancel(true);
int index = catigoriesHolder.indexOfChild(view);
activeCategory.setText(categories[index]);
dft = new DownloadFilesTask();
dft.execute(rssFeedURL[index]);
dft.execute(url);
}
};
私DownloadFilesオブジェクト、私はキャンセルする必要が魔女です。そして、ここで私のが方法をonCancelled:
protected void onCancelled() {
super.onCancelled();
}
私はDFTがキャンセルされた場合、クリックイベント内で確認することも試みた後、私のカスタムのダウンロード可能なクラスの新しいインスタンスを作成します。どのようにこれを行うことができ、私はこれをしようとするとき:
それは2番目のクリックでも機能しませんか? doInBackground(...)
private OnClickListener categoryClick = new OnClickListener(){
public void onClick(View view) {
int index = catigoriesHolder.indexOfChild(view);
activeCategory.setText(categories[index]);
if (dft.isCancelled()) {
dft.cancel(false);
dft = new DownloadFilesTask();
dft.execute(rssFeedURL[index]);
} else {
dft.cancel(true);
}
}
};
しかし、この場合、起こり内側あなたはisCancelled(かどうかを確認するために私に助言した後、私はこれを試してみました
): - デフォルトのURLはうまくいきますが、ボタンをクリックしてもアクションはありません。
protected List<RSSItem> doInBackground(String... urls) {
parse(urls[0]);
if (feed == null) { return null; }
rssList = feed.getAllItems();
Iterator<RSSItem> iterator = rssList.iterator();
while(iterator.hasNext()) {
if (isCancelled()) return null;
RSSItem rss = iterator.next();
publishProgress(rss);
}
return rssList;
}
私は現在AsyncTaskの状態を確認した後、それが動作します:
private OnClickListener categoryClick = new OnClickListener(){
public void onClick(View view) {
String status = dft.getStatus().name();
if (status.equals("FINISHED") || dft.isCancelled()) {
dft = new DownloadFilesTask();
int index = catigoriesHolder.indexOfChild(view);
activeCategory.setText(categories[index]);
dft.execute(rssFeedURL[index]);
} else {
dft.cancel(true);
}
}
};
しかし、まだ私の期待に適合していません。現在は、DownloadFilesクラスの新しいインスタンスを取得するには、2回クリックする必要があります。それをワンクリックに変換できますか?
何も私に飛び出していません。多分もっと多くのコードが私たちの助けになるでしょう。 OnClickListenerがボタンにバインドされていますか? –
私は進歩を遂げました! :) – nenito
しかし、まだワンクリックで動作しません!上記のソースコードに加えられた変更を見ることができます。 – nenito