0

我有一个应用程序,它每 3 分钟从 FTP 服务器下载文件,然后读取它。我的问题是这个 FTP 传输只在应用程序启动时第一次工作,当计时器下次运行此方法时,应用程序崩溃。这是我如何使用计时器调用该方法

    Timer t2 = new Timer(180000, new ClockListener2());
    t2.start();

接着

   public class ClockListener2 implements ActionListener {
    public void actionPerformed(ActionEvent ae) {
    downloadFtp();
    }

和现在的FTP传输方法

public void downloadFtp() {
    FTPClient client = new FTPClient();
    FileOutputStream fos = null;
    try {
        client.connect("192.168.1.102");
        client.login("anonymous", "");
        String filename = "text.txt";
        fos = new FileOutputStream(filename);
        client.retrieveFile("/" + filename, fos);
        client.logout();
        client.disconnect();
        if (fos != null) {
            fos.close();}
    } catch (Exception e) {
        e.printStackTrace();
    }
    }

以前有人遇到过这个问题吗?有什么问题?

谢谢。

4

1 回答 1

1

您可以将您的设备与 ADB 连接以查看您的设备打印的日志(请参阅logcat)。如果您的应用程序崩溃,您将看到一些 FATAL 异常跟踪(通常非常有用),例如:

07-24 09:33:59.285: ERROR/AndroidRuntime(4858): FATAL EXCEPTION: main
    java.lang.NullPointerException
    at ***.daifan.activity.***Activity.onCreateOptionsMenu(***ListActivity.java:96)
    at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:44)
    at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559)
    at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:65)
    at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:165)
    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:417)
    at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:768)
    at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:3009)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4514)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
    at dalvik.system.NativeStart.main(Native Method)
于 2013-07-25T08:31:45.353 回答