내가 시작할 때 몇 가지 파일을 바로 다운로드해야하는 탭 레이아웃 응용 프로그램이 있으므로 onCreate 메서드의 Main.java 파일에서 다음을 호출합니다.스레드가 끝나고 dialog.dismiss()를 호출하면 WindowLeaked 예외가 발생합니다.
myProgressDialog = ProgressDialog.show(Controller.this,
"Please wait...", "Doing Extreme Calculations...", true);
downloadFile(NAME_LOCAL, NAME_SERVER, true);
downloadFile은 다음과 같이 보이는 별도의 스레드입니다.
protected void downloadFile(final String localFilePath, final String remoteFileName, final boolean ASCII) {
// Fire off a thread to do some work that we shouldn't do directly in the UI thread
Thread a = new Thread() {
public void run() {
Logger.setLevel(Level.DEBUG);
try{
//create client
log.info("Creating Client");
ftp = new FileTransferClient();
log.info("Setting Remote Host");
ftp.setRemoteHost(host);
ftp.setUserName(username);
ftp.setPassword(password);
//connect. . .We hope
log.info("Connecting to server " + host);
ftp.connect();
ftp.getAdvancedFTPSettings().setConnectMode(FTPConnectMode.PASV);
if(ASCII){
ftp.setContentType(FTPTransferType.ASCII);
Log.d("ASCII", "USING ASCII");
}else if(!ASCII){
Log.d("BINARY", "USING BINARY");
ftp.setContentType(FTPTransferType.BINARY);
}
ftp.downloadFile(cache + localFilePath , remoteFileName);
}catch (Exception e){
e.printStackTrace();
}
mHandler.post(mUpdateResults);
Handler handler=new Handler();
handler.post(new Runnable(){public void run(){myProgressDialog.dismiss();}});
}
};
a.start();
}
로그 고양이에서 다운로드가 시작되고 갑자기 끝납니다.
02-17 17:27:51.175: ERROR/WindowManager(2523): Activity org.IRE.toolbox.Controller has leaked window [email protected] that was originally added here
02-17 17:27:51.175: ERROR/WindowManager(2523): android.view.WindowLeaked: Activity org.IRE.toolbox.Controller has leaked window [email protected] that was originally added here
무슨 일이에요?! 미리 감사드립니다!
코드를 약간 맞춰서 (올바른 들여 쓰기) 탭을 변경하면 알려주십시오. 다운로드가 시작되거나 무엇을하는지 ... btw : 다운로드를 위해 ASyncTask를 사용하는 것이 좋습니다 ... – WarrenFaith