Android计划文件到服务器
好的,我知道如何将文件发送到服务器…我要查找的是在sd卡上的文件夹中查找的代码,然后将所有文本文件发送到其中,然后将其删除..但是它需要一直在那里查找,直到有internet连接,以便完成任务,否则它会每30秒继续查找。。?希望我的解释正确您应该构建一个执行这些操作的Android计划文件到服务器,android,Android,好的,我知道如何将文件发送到服务器…我要查找的是在sd卡上的文件夹中查找的代码,然后将所有文本文件发送到其中,然后将其删除..但是它需要一直在那里查找,直到有internet连接,以便完成任务,否则它会每30秒继续查找。。?希望我的解释正确您应该构建一个执行这些操作的 public class UploadService extends Service { private WakeLock cpuLock; private WifiLock wifiLock; priv
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互联网连接时,尝试启动该服务。您的服务可能由意图触发,您必须在AndroidManifest.xml文件中添加意图过滤器
让我就后台操作提出一些建议:
添加一些规则以降低服务运行率。在其他情况下,你的电池会很快耗尽。也可以考虑.
上传前检查电池电量
检查您是否处于漫游模式,以及用户对此是否满意
哇,这太复杂了,哈哈……作为一个初学者,我甚至不知道该怎么称呼这项服务?我如何让它每30秒查看一次?我是否需要在清单文件中声明PowerManager和wifi?我如何让它每30秒查看一次->不要这样做,它会耗尽电池电量。我还需要在清单文件中声明PowerManager和wifi吗?->没有。wifi和PowerManager给了我一个问题,我会让它每1小时或30分钟检查一次