H 
		
				
				
			
		HammerH
Neues Mitglied
- 0
 
Hallo,
ich habe ein Problem und hoffe ihr könnt mir helfen.
In meiner MainActivity starte ich mit Buttonknopf einen Upload von Daten.
Diesen führe ich mit einem AsyncTask aus.
Der Asynctask erstellt einen Progressdialog und sobald "doinbackground" fertig ist, gehts zur onpostexecute und Progressdialog wird geschlossen.
Ich habe das Problem aber, bei einer langsamen Internetverbindung gibt der Asynctask irgendwann auf und der Progressdialog läuft weiter bis ins unendliche.
Wie implementiere ich einen TimeOut, der nach ca 30 Sekunden den AsyncTask beendet und die Progressdialog?
Hier mal mein Code vom AsyncTask:
				
			ich habe ein Problem und hoffe ihr könnt mir helfen.
In meiner MainActivity starte ich mit Buttonknopf einen Upload von Daten.
Diesen führe ich mit einem AsyncTask aus.
Der Asynctask erstellt einen Progressdialog und sobald "doinbackground" fertig ist, gehts zur onpostexecute und Progressdialog wird geschlossen.
Ich habe das Problem aber, bei einer langsamen Internetverbindung gibt der Asynctask irgendwann auf und der Progressdialog läuft weiter bis ins unendliche.
Wie implementiere ich einen TimeOut, der nach ca 30 Sekunden den AsyncTask beendet und die Progressdialog?
Hier mal mein Code vom AsyncTask:
@Override
protected void onPreExecute() {
super.onPreExecute();
time = System.currentTimeMillis();
Log.d(TAG, "PBar: Hat gestartet");
if (MainActivity.MessungStart == true)
{
ConnectionTask.dialog = new ProgressDialog(MainActivity.context);
ConnectionTask.dialog.setMessage("Daten werden hochgeladen...");
dialog.setCanceledOnTouchOutside(false);
ConnectionTask.dialog.show();
}
}
protected Void doInBackground(String... args) {
mUser = MainActivity.username;
mPassword = MainActivity.password;
Log.d(TAG,"Async: User= "+mUser+" Password= "+mPassword);
Timer t = new Timer();
TimerTask tk = new TimerTask() {
@Override
public void run() {
timeout = true;
}
};
t.schedule(tk, 100);
if(timeout == true)
{
Log.d(TAG, "TimeOut = true");
onPostExecute(null);
}
try {
authenticate();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
{
try {
sendData();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(temp!= null)
{
try {
ReceiveMessageState();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Sendungfertig = true;
if(MainActivity.asyncIsCanceled == true)
{
if (ConnectionTask.dialog.isShowing() == true)
{
ConnectionTask.dialog.dismiss();
}
}
isCancelled();
return null;
}
@Override
protected void onPostExecute(Void v) {
super.onPostExecute(v);
Log.d(TAG, "PBar: Sollte enden");
if(MessageChecked==true)
{
if (ConnectionTask.dialog.isShowing() == true)
{
ConnectionTask.dialog.dismiss();
}
if(isCancelled()==true)
{
if (ConnectionTask.dialog.isShowing() == true)
{
ConnectionTask.dialog.dismiss();
}
MessageChecked = false;
MainActivity.MessungStart = false;
}
}
}