Fixed app crashing during data download

This commit is contained in:
pelya
2010-07-19 18:45:05 +03:00
parent 59861deb5a
commit e7112534b4
2 changed files with 57 additions and 17 deletions

View File

@@ -95,6 +95,13 @@ class DataDownloader extends Thread
Status = _Status;
Parent = _Parent;
}
public void setParent( TextView _Status, MainActivity _Parent )
{
synchronized(DataDownloader.this) {
Status = _Status;
Parent = _Parent;
}
}
public void setText(final String str)
{
@@ -107,10 +114,13 @@ class DataDownloader extends Thread
Status.setText(text + "\n" + Globals.ReadmeText);
}
}
Callback cb = new Callback();
cb.text = new String(str);
cb.Status = Status;
Parent.runOnUiThread(cb);
synchronized(DataDownloader.this) {
Callback cb = new Callback();
cb.text = new String(str);
cb.Status = Status;
if( Parent != null && Status != null )
Parent.runOnUiThread(cb);
}
}
}
@@ -120,8 +130,19 @@ class DataDownloader extends Thread
DownloadComplete = false;
Status = new StatusWriter( _Status, _Parent );
Status.setText( "Connecting to " + Globals.DataDownloadUrl );
outFilesDir = Parent.getFilesDir().getAbsolutePath();
if( Globals.DownloadToSdcard )
outFilesDir = "/sdcard/" + Globals.ApplicationName;
this.start();
}
public void setParent(MainActivity _Parent, TextView _Status)
{
synchronized(this) {
Parent = _Parent;
Status.setParent( _Status, _Parent );
}
}
@Override
public void run()
@@ -296,23 +317,25 @@ class DataDownloader extends Thread
public MainActivity Parent;
public void run()
{
Parent.initSDL();
Parent.initSDL();
}
}
Callback cb = new Callback();
cb.Parent = Parent;
Parent.runOnUiThread(cb);
synchronized(this) {
cb.Parent = Parent;
if(Parent != null)
Parent.runOnUiThread(cb);
}
}
private String getOutFilePath(final String filename)
{
if( Globals.DownloadToSdcard )
return "/sdcard/" + Globals.ApplicationName + "/" + filename;
return Parent.getFilesDir().getAbsolutePath() + "/" + filename;
return outFilesDir + "/" + filename;
};
public boolean DownloadComplete;
public StatusWriter Status;
private MainActivity Parent;
private String outFilesDir = null;
}