나는 이해하지 못하는 문제가 있습니다. Android에서 간단한 진행 대화 상자를 보여 드리고자합니다. 그래서 AsyncTask
을 만들고 생성자에서 대화 상자를 만듭니다. 대화 상자를 onPreExceution
에서 initialise
까지 사용하고 대화 상자를 표시하는 방법을 사용합니다. 그래서 지금까지는 이것이 나를 위해 정확 해 보입니다. 하지만 Nexus 7에서 앱을 시작하면 작업이 완료 될 때까지 대화 상자가 표시되지 않습니다. 그래서 직업이 끝나면 1 초 반 동안 나타납니다 ... 내가 뭘 잘못하고 있니? 진행률 대화 상자는 작업이 이미 완료되었을 때만 나타납니다.
public class ParseHTMLCodeNew extends AsyncTask<String, Void, String> {
ProgressDialog dialog;
public ParseHTMLCodeNew(Context context) {
dialog = new ProgressDialog(context);
}
@Override
protected void onPreExecute() {
//einrichten des Wartedialogs
dialog.setTitle("Bitte warten!");
dialog.setMessage("Die Kommentare werden vom Server geladen.");
dialog.show();
}
@Override
protected String doInBackground(String params) {
InputStream is = null;
String data = "";
try
{
URL url = new URL(params[0]);
is = url.openStream();
data = new Scanner(is).useDelimiter("//html//").next();
}
catch (Exception e) {
e.printStackTrace();
}
return data;
}
@Override
protected void onPostExecute(String result) {
//Dialog beenden RSS Feed ist fertig geparst
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}
}
UPDATE
입니다) :
public class ParseHTMLCodeNew extends AsyncTask<String, String, String> {
ProgressDialog dialog;
private final OnCompleteTaskListener onCompleteTaskListener;
public interface OnCompleteTaskListener {
void onComplete(String data);
}
public ParseHTMLCodeNew(Context context, OnCompleteTaskListener taskListener) {
onCompleteTaskListener = taskListener;
dialog = new ProgressDialog(context);
}
@Override
protected void onPreExecute() {
//einrichten des Wartedialogs
dialog.setTitle("Bitte warten!");
dialog.setMessage("Die Kommentare werden vom Server geladen.");
dialog.show();
}
@Override
protected String doInBackground(String... params) {
InputStream is = null;
String data = "";
try
{
URL url = new URL(params[0]);
is = url.openStream();
data = new Scanner(is).useDelimiter("//html//").next();
}
catch (Exception e) {
e.printStackTrace();
}
return data;
}
@Override
protected void onPostExecute(String result){
onCompleteTaskListener.onComplete(result);
//Dialog beenden RSS Feed ist fertig geparst
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}
}
그리고 나는 그것을 이런 식으로 호출 오전 :
new ParseHTMLCodeNew(this,new OnCompleteTaskListener() {
@Override
public void onComplete(String data) {
gData = data;
}
}).execute(url);
을
귀하의 게시물에 댓글을 달았습니다. data
은 (는) 가치가 없습니다.
작업을 완료하는 데 시간이 얼마나 걸립니까? – DeeV
우리는이 코드를 어떻게 호출하는지 알 수 있습니다. –
코드를 이렇게 호출합니다. data = new ParseHTMLCodeNew (CommentActivity.is) .execute (url) .get(); – Irazzer