FTP経由で非常に小さなテキストファイル(10バイト)を定期的にダウンロードしてから、大きなテキストファイル(200バイト)をアップロードするアプリがあります。アラームマネージャを使用してこれを行い、うまく機能しているようです。インターネットが混雑した場合に備えて、別のスレッドで実行する必要があるのか、それとも慎重になりすぎているのでしょうか。FTPダウンロードのコードは次のとおりです。
public void getFTP(Context context)
{
//
// Download config.txt file from server
//
FTPClient ftpClient = new FTPClient();
try{
ftpClient.connect(InetAddress.getByName(ipAddress));
ftpClient.enterLocalPassiveMode();
ftpClient.login("user", "pass");
ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("/sdcard/config.txt"),8*1024);
boolean status=ftpClient.retrieveFile("config.txt", bos);
if(status){
Toast toast = Toast.makeText(context, "Downloaded config.txt!", Toast.LENGTH_SHORT);
toast.show();
}
else {
Toast toast = Toast.makeText(context, "Cannot download config.txt!", Toast.LENGTH_SHORT);
toast.show();
return;
}
bos.flush();
bos.close();
ftpClient.logout();
ftpClient.disconnect();
}
catch (IOException e){
Toast.makeText(context,"Connection error!" , Toast.LENGTH_LONG).show();
return;
}