Android 没有数据传输应用程序停止工作

Android 没有数据传输应用程序停止工作,android,multithreading,android-asynctask,Android,Multithreading,Android Asynctask,我有一个活动(MyFTPClient),它连接到FTP服务器并异步下载文件列表。 MyFTPClient.java @Override protected void onPreExecute(){ dialog = ProgressDialog.show(MyFTPClient.this,null,"Please wait..."); } protected ArrayList<String> doInBackgr

我有一个活动(MyFTPClient),它连接到FTP服务器并异步下载文件列表。 MyFTPClient.java

@Override
       protected void onPreExecute(){
           dialog = ProgressDialog.show(MyFTPClient.this,null,"Please wait...");

        }

       protected ArrayList<String> doInBackground(String... connection) {


            XmlSerializer serializer = Xml.newSerializer();
            StringWriter writer = new StringWriter();

            Activity context = MyFTPClient.this;
            final ConnectivityManager connec = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);


                if(connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED)
                {
                    File sdCard = Environment.getExternalStorageDirectory();
                    File directory = new File(sdCard.getAbsolutePath()+"/FTPClient/FTPCL.xml"); 

                    temparrlist=listftpitems("/public_html/");

                    if(temparrlist!= null){

                        sizelist = listftpfilesize("/public_html/");

                        if(sizelist!=null){
                            try {
                            //xml file creation
                        }
                    }
                    else{
                        //dialog.dismiss();
                        MyFTPClient.this.runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                AlertDialog.Builder builder = new AlertDialog.Builder(MyFTPClient.this);
                                    builder.setTitle("Connection problem")
                                    .setMessage("Problem in connecting to server")
                                    .setNegativeButton("OK", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int which) {
                                            dialog.cancel();  
                                        }
                                    });
                                    AlertDialog alert = builder.create();
                                    alert.show();
                        }});


                    }

             }
                else if(connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
                        connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  )
                    {
                        dialog.dismiss();
                        MyFTPClient.this.runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                AlertDialog.Builder builder = new AlertDialog.Builder(MyFTPClient.this);
                                    builder.setTitle("Connection problem")
                                    .setMessage("Unable connect to host server. Please Check your Internet Connectivity.")
                                    .setNegativeButton("OK", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int which) {
                                            dialog.cancel();  
                                        }
                                    });
                                    AlertDialog alert = builder.create();
                                    alert.show();
                        }});
                       return null;
            }       
            return temparrlist;    
        }

    @Override
    protected void onPostExecute(ArrayList<String>result) {
           dialog.dismiss();
       }
listftpitem和listftpfilesize

public ArrayList<String> listftpitems(String dir_path){
         ArrayList<String> arrayList = new ArrayList<String>();

        try {
            mFTPClient = new FTPClient();
            mFTPClient.setConnectTimeout(5000);
            //mFTPClient.setDefaultTimeout(10*1000);
            mFTPClient.connect("ftp.andi.site11.com",21);
            boolean status = mFTPClient.login("a7078185", "hack@44");
            mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
            mFTPClient.enterLocalPassiveMode();

                    if (status == true) {
                        Log.d(TAG, "Connection Success");
                        final FTPFile[] files;
                        try {
                            files = mFTPClient.listFiles("/public_html/");
                            for (FTPFile file : files) {
                                String details = file.getName();

                                boolean isFile = file.isFile();

                                if (isFile) {
                                    Log.d(TAG, details);
                                    arrayList.add(details);
                                    }
                               }
                        }catch (IOException e1) {
                           e1.printStackTrace();
                        }   

                }
                    else {
                        Log.d(TAG, "Connection failed");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Log.d(TAG, "Unable to connect");

            }
        return arrayList;

        }

     private ArrayList<Integer> listftpfilesize(String string) {
         ArrayList<Integer> sizeList = new ArrayList<Integer>();
         final FTPFile[] filesz;
            try {
                filesz = mFTPClient.listFiles("/public_html/");
                for (FTPFile file : filesz) {
                    long details = file.getSize();
                    long size = details/1024;
                    boolean isFile = file.isFile();

                    if (isFile) {
                        Log.d(TAG, String.format("EAN-8: %d",size ));
                        sizeList.add((int) size);
                        }
                   }
            }catch (IOException e1) {
                e1.printStackTrace();   
            }   
         return sizeList;
        }
public ArrayList listftpitems(字符串目录路径){
ArrayList ArrayList=新的ArrayList();
试一试{
mFTPClient=新的FTPClient();
mFTPClient.setConnectTimeout(5000);
//mFTPClient.setDefaultTimeout(10*1000);
mFTPClient.connect(“ftp.andi.site11.com”,21);
布尔状态=mFTPClient.login(“a7078185”hack@44");
mFTPClient.setFileType(FTP.BINARY\u文件类型);
mFTPClient.enterLocalPassiveMode();
如果(状态==真){
Log.d(标记“连接成功”);
最终FTPFile[]文件;
试一试{
files=mFTPClient.listFiles(“/public\u html/”);
用于(FTPFile文件:文件){
字符串详细信息=file.getName();
布尔值isFile=file.isFile();
if(isFile){
日志d(标签、详细信息);
arrayList.add(详细信息);
}
}
}捕获(IOE1异常){
e1.printStackTrace();
}   
}
否则{
Log.d(标记“连接失败”);
}
}捕获(例外e){
e、 printStackTrace();
Log.d(标记“无法连接”);
}
返回数组列表;
}
私有ArrayList listftpfilesize(字符串){
ArrayList sizeList=新的ArrayList();
最终FTPFile[]文件z;
试一试{
filesz=mFTPClient.listFiles(“/public_html/”);
用于(FTPFile文件:filesz){
long details=file.getSize();
长尺寸=细节/1024;
布尔值isFile=file.isFile();
if(isFile){
Log.d(标记,字符串格式(“EAN-8:%d”,大小));
添加((int)大小);
}
}
}捕获(IOE1异常){
e1.printStackTrace();
}   
返回sizeList;
}

我无法纠正这个错误。多谢各位

这里引用代码中的哪一行?在com.example.ftpclient.MyFTPClient.listftpitems(MyFTPClient.java:258)上,代码中的第258行是什么?mFTPClient.connect(“ftp.abcd.com”,21);我试图设置连接超时,但它不起作用。I请粘贴listftpfilesize()方法的代码
02-17 22:48:43.276: W/System.err(17703): java.net.UnknownHostException: Host is unresolved: ftp.andi.site11.com
02-17 22:48:43.276: W/System.err(17703):    at java.net.Socket.connect(Socket.java:855)
02-17 22:48:43.286: W/System.err(17703):    at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
02-17 22:48:43.306: W/System.err(17703):    at com.example.ftpclient.MyFTPClient.listftpitems(MyFTPClient.java:258)
02-17 22:48:43.316: W/System.err(17703):    at com.example.ftpclient.MyFTPClient$connection_test.doInBackground(MyFTPClient.java:118)
02-17 22:48:43.346: W/System.err(17703):    at com.example.ftpclient.MyFTPClient$connection_test.doInBackground(MyFTPClient.java:1)
02-17 22:48:43.346: W/System.err(17703):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
02-17 22:48:43.356: W/System.err(17703):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-17 22:48:43.356: W/System.err(17703):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-17 22:48:43.386: W/System.err(17703):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
02-17 22:48:43.406: W/System.err(17703):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-17 22:48:43.406: W/System.err(17703):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-17 22:48:43.416: W/System.err(17703):    at java.lang.Thread.run(Thread.java:864)
02-17 22:48:43.416: D/MyFTPClient(17703): Unable to connect
02-17 22:48:43.426: D/memalloc(17703): /dev/pmem: Unmapping buffer base:0x54333000 size:6574080 offset:6266880
02-17 22:48:43.426: D/memalloc(17703): /dev/pmem: Unmapping buffer base:0x56187000 size:6881280 offset:6574080
02-17 22:48:43.426: D/memalloc(17703): /dev/pmem: Unmapping buffer base:0x58114000 size:7188480 offset:6881280
02-17 22:48:43.576: W/dalvikvm(17703): threadid=11: thread exiting with uncaught exception (group=0x40a7d228)
02-17 22:48:43.626: E/AndroidRuntime(17703): FATAL EXCEPTION: AsyncTask #1
02-17 22:48:43.626: E/AndroidRuntime(17703): java.lang.RuntimeException: An error occured while executing doInBackground()
02-17 22:48:43.626: E/AndroidRuntime(17703):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.lang.Thread.run(Thread.java:864)
02-17 22:48:43.626: E/AndroidRuntime(17703): Caused by: java.lang.NullPointerException
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:471)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:534)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:583)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTP.syst(FTP.java:1393)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTPClient.getSystemName(FTPClient.java:1849)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2263)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2046)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at com.example.ftpclient.MyFTPClient.listftpfilesize(MyFTPClient.java:326)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at com.example.ftpclient.MyFTPClient.access$0(MyFTPClient.java:322)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at com.example.ftpclient.MyFTPClient$connection_test.doInBackground(MyFTPClient.java:122)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at com.example.ftpclient.MyFTPClient$connection_test.doInBackground(MyFTPClient.java:1)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
02-17 22:48:43.626: E/AndroidRuntime(17703):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-17 22:48:43.626: E/AndroidRuntime(17703):    ... 5 more
public ArrayList<String> listftpitems(String dir_path){
         ArrayList<String> arrayList = new ArrayList<String>();

        try {
            mFTPClient = new FTPClient();
            mFTPClient.setConnectTimeout(5000);
            //mFTPClient.setDefaultTimeout(10*1000);
            mFTPClient.connect("ftp.andi.site11.com",21);
            boolean status = mFTPClient.login("a7078185", "hack@44");
            mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
            mFTPClient.enterLocalPassiveMode();

                    if (status == true) {
                        Log.d(TAG, "Connection Success");
                        final FTPFile[] files;
                        try {
                            files = mFTPClient.listFiles("/public_html/");
                            for (FTPFile file : files) {
                                String details = file.getName();

                                boolean isFile = file.isFile();

                                if (isFile) {
                                    Log.d(TAG, details);
                                    arrayList.add(details);
                                    }
                               }
                        }catch (IOException e1) {
                           e1.printStackTrace();
                        }   

                }
                    else {
                        Log.d(TAG, "Connection failed");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Log.d(TAG, "Unable to connect");

            }
        return arrayList;

        }

     private ArrayList<Integer> listftpfilesize(String string) {
         ArrayList<Integer> sizeList = new ArrayList<Integer>();
         final FTPFile[] filesz;
            try {
                filesz = mFTPClient.listFiles("/public_html/");
                for (FTPFile file : filesz) {
                    long details = file.getSize();
                    long size = details/1024;
                    boolean isFile = file.isFile();

                    if (isFile) {
                        Log.d(TAG, String.format("EAN-8: %d",size ));
                        sizeList.add((int) size);
                        }
                   }
            }catch (IOException e1) {
                e1.printStackTrace();   
            }   
         return sizeList;
        }