0

我正在开发一个应用程序,我需要使用 wifi 从/向 FTP 服务器传输文件。调试时,用 USB 电缆连接到 Eclipse,应用程序工作......但是,当我处于独立模式时,不使用 Eclipse IDE,传输不会发生。FTP 服务器是本地的,我可以看到正在建立的连接......并且卡在文件传输中

    (000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> Connected, sending welcome message...
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> 220-FileZilla Server version 0.9.41 beta
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> 220-written by Tim Kosse (Tim.Kosse@gmx.de)
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> 220 Please visit http://sourceforge.net/projects/filezilla/
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> PASV
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> 530 Please log in with USER and PASS first.
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> USER th38939
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> 331 Password required for th38939
(000056)15/01/2013 16:42:20 - (not logged in) (192.168.1.113)> PASS ***********
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 230 Logged on
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> TYPE I
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 200 Type set to I
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> CWD /public_ftp/cobradores/cobrador_01/remessa/
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 250 CWD successful. "/public_ftp/cobradores/cobrador_01/remessa" is current directory.
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> PWD
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 257 "/public_ftp/cobradores/cobrador_01/remessa" is current directory.
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> PORT 192,168,1,113,202,216
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 200 Port command successful
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> NLST
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 150 Opening data channel for directory list.
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 226 Transfer OK
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> PORT 192,168,1,113,133,181
(000056)15/01/2013 16:42:20 - th38939 (192.168.1.113)> 200 Port command successful
(000056)15/01/2013 16:42:21 - th38939 (192.168.1.113)> RETR ARQUIVO_TESTE.REM
(000056)15/01/2013 16:42:21 - th38939 (192.168.1.113)> 150 Opening data channel for file transfer.
(000056)15/01/2013 16:42:21 - th38939 (192.168.1.113)> 226 Transfer OK
(000056)15/01/2013 16:44:21 - th38939 (192.168.1.113)> 421 Connection timed out.
(000056)15/01/2013 16:44:21 - th38939 (192.168.1.113)> disconnected.

有什么线索吗?

4

1 回答 1

1

可能是因为 CPU 将进入睡眠状态(如果连接了调试器,它不会进入睡眠状态)。但是您还需要保持 wifi 连接处于活动状态。

您需要各种锁来保持设备处于活动状态。至少一个WifiLock。还有一个带有 CPU 锁的 WakeLock。WakeLock 应该通过 PowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"tag") 获取。PARTIAL_WAKE_LOCK 是唯一阻止 CPU 进入睡眠模式的锁。

如果该进程要运行任意时间长度,您还需要在一个名为 Service.startForeground 的服务中运行。如果您没有调用 startForeground,Android 将每 30 分钟(有时比这更频繁)终止任何服务或后台应用程序。注意 Context.bindService 中的错误。绑定到服务时不要使用 Context.BIND_ABOVE_CLIENT 标志,因为这会触发 Android 4.x 中的错误,从而阻止为服务分配前台状态。

另一个可以发挥作用的有趣错误。某些 Android 设备错误地实现了低功耗模式。在省电模式下运行时,系统正常运行时间时钟的运行速度只是其应有的速度的一小部分。如果您使用睡眠或其他延迟机制,它们可能会花费比应有的时间长得多的时间。

于 2013-01-15T19:24:41.153 回答