0
好吧,我知道如何將文件發送到服務器...我所尋找的是代碼看起來在SD卡上的文件夾中,然後把在那裏的所有文本文件,然後刪除他們..但它需要繼續在那裏看,直到有互聯網連接,以便它完成工作,否則它每隔30秒一直在那裏看.. ..?希望我正確的Android調度的文件服務器
好吧,我知道如何將文件發送到服務器...我所尋找的是代碼看起來在SD卡上的文件夾中,然後把在那裏的所有文本文件,然後刪除他們..但它需要繼續在那裏看,直到有互聯網連接,以便它完成工作,否則它每隔30秒一直在那裏看.. ..?希望我正確的Android調度的文件服務器
解釋對我來說,你應該建立一個service這確實這些操作。
public class UploadService extends Service {
private WakeLock cpuLock;
private WifiLock wifiLock;
private UploadFilesTask task;
@Override
public IBinder onBind(Intent i) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
final PowerManager powerMgr = (PowerManager)getSystemService(Context.POWER_SERVICE);
cpuLock = powerMgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "my_lock");
cpuLock.acquire();
final WifiManager wifiMgr = (WifiManager)getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL, "my_lock");
wifiLock.acquire();
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
if (intent.hasExtra("start") && taskIsNotRunning()) {
task = new UploadFilesTask();
task.execute(null);
return;
}
}
private boolean taskIsNotRunning() {
return task == null || task.getStatus() != AsyncTask.Status.RUNNING || task.isCancelled();
}
@Override
public void onDestroy() {
super.onDestroy();
cpuLock.release();
wifiLock.release();
}
private class UploadFilesTask extends AsyncTask<Object, Object, Object> {
private String dirName;
public UploadFilesTask(String directoryName) {
dirName = directoryName;
}
@Override
protected Object doInBackground(Object... arg0) {
final File uploadDirectory = new File(Environment.getExternalStorageDirectory(), dirName);
final File filesToUpload[] = uploadDirectory.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.getName().toLowerCase().endsWith(".txt");
}
});
for (File f : filesToUpload) {
try {
// invoke your method for upload
f.delete();
} catch (Exception e) {};
}
return null;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
stopSelf();
}
}
}
不要忘記把服務宣言到AndroidManifest.xml文件。
可以啓動與您的活動「啓動完成」的意圖,或直接服務。
但是它需要保持在尋找 那裏,直到有互聯網連接 ,使其完成了 工作,否則它一直在尋找 有每30秒..?希望我 正確解釋
嘗試啓動服務時,wifi/3G互聯網連接出現。您的服務可以通過this intent觸發(您必須在AndroidManifest.xml文件中添加intent-filter)。
讓我把一些建議有關後臺操作:
添加一些規則,以減少服務運行的速度。在其他情況下,你的電池會很快耗盡。另請考慮AlarmManager。
檢查電池電平上傳(BatteryManager)之前。
檢查,如果你是在漫遊模式,如果用戶是罰款與(SystemSettings)。
哇這是複雜的大聲笑...作爲一個初學者我甚至不確定如何打電話給這項服務?和我如何得到它讓每一個30秒 – Beginner 2011-01-19 10:47:02