Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 任务永远不会结束_Java_Android_Android Asynctask - Fatal编程技术网

Java 任务永远不会结束

Java 任务永远不会结束,java,android,android-asynctask,Java,Android,Android Asynctask,我试图在异步任务上获取xml文件,并在ListActivity上显示结果 问题是,对于debug,当我到达行“doc=db.parse(xml);”时,系统挂起,永远不会回来 在活动线程上执行“暂停”,并显示以下堆栈跟踪 堆栈跟踪 OSNetworkSystem.read(FileDescriptor, byte[], int, int) line: not available [native method] BlockGuard$WrappedNetworkSystem.read(File

我试图在异步任务上获取xml文件,并在ListActivity上显示结果

问题是,对于debug,当我到达行“doc=db.parse(xml);”时,系统挂起,永远不会回来

在活动线程上执行“暂停”,并显示以下堆栈跟踪

堆栈跟踪

OSNetworkSystem.read(FileDescriptor, byte[], int, int) line: not available [native method]  
BlockGuard$WrappedNetworkSystem.read(FileDescriptor, byte[], int, int) line: 273    
PlainSocketImpl.read(byte[], int, int) line: 458    
SocketInputStream.read(byte[], int, int) line: 85   
SocketInputBuffer(AbstractSessionInputBuffer).fillBuffer() line: 103    
SocketInputBuffer(AbstractSessionInputBuffer).read() line: 120  
ChunkedInputStream.getChunkSize() line: 211 
ChunkedInputStream.nextChunk() line: 183    
ChunkedInputStream.read(byte[], int, int) line: 155 
EofSensorInputStream.read(byte[], int, int) line: 159   
InputStreamReader.read(char[], int, int) line: 255  
KXmlParser.peek(int) line: 925  
KXmlParser.pushText(int, boolean, boolean) line: 875    
KXmlParser.nextImpl() line: 354 
KXmlParser.nextToken() line: 1399   
DocumentBuilderImpl.parse(XmlPullParser, DocumentImpl, Node, int) line: 359 
我的android模拟器使用代理运行,工作正常(在浏览器上测试)。 尝试了一个很小的xml,但不太管用

上面是我的档案

my basic.java

public class Basic {

    public InputStream getmyPStXML(String url)
    {
        InputStream xml = null;

        String dstUrl = "http://mypst.com.br" + url;

        try
        {
            // defaultHttpClient
            HttpParams params = new BasicHttpParams();
            params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

            DefaultHttpClient httpClient = new DefaultHttpClient();         
            HttpGet request = new HttpGet(dstUrl);
            request.setHeader("User-Agent", "set your desired User-Agent");

            HttpResponse httpResponse = httpClient.execute(request);

            xml = httpResponse.getEntity().getContent();

        }
        catch (UnsupportedEncodingException e)
        {
            e.printStackTrace();
        }
        catch (ClientProtocolException e)
        {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        // return XML
        return xml;     
    }  

    public Document getDomElement(InputStream xml)
    {
        Document doc = null;
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try
        {
            DocumentBuilder db = dbf.newDocumentBuilder();
            doc = db.parse(xml); 

        }
        catch (ParserConfigurationException e)
        {
            Log.e("Error: ", e.getMessage());
            return null;
        }
        catch (SAXException e)
        {
            Log.e("Error: ", e.getMessage());
            return null;
        }
        catch (IOException e)
        {
            Log.e("Error: ", e.getMessage());
            return null;
        }
        return doc;
    }
}
my GetUserGames.java

public class GetUserGames extends ListActivity {

    static final String KEY_JOGOS   = "jogos";
    static final String KEY_JOGO    = "jogo";
    static final String KEY_PIC     = "pic";
    static final String KEY_PIC_BIG = "pic_big";
    static final String KEY_NAME    = "name";

    private ProgressDialog m_ProgressDialog = null; 


    public class getUserGamesASYNC extends AsyncTask<String, Void, Document>
    {

        public Document getUserGames(String username)
        {
            Basic b = new Basic();
            InputStream xml = b.getmyPStXML("/rank/" + username + "/xml/");
            return b.getDomElement(xml);
        }

        protected Document doInBackground(String... username) {
            return getUserGames(username[0]);   
        }
    }
}
公共类GetUserGames扩展了ListActivity{
静态最终字符串键\u JOGOS=“JOGOS”;
静态最终字符串键\u JOGO=“JOGO”;
静态最终字符串键\u PIC=“PIC”;
静态最终字符串键\u PIC\u BIG=“PIC\u BIG”;
静态最终字符串键\u NAME=“NAME”;
private ProgressDialog m_ProgressDialog=null;
公共类getUserGamesASYNC扩展异步任务
{
公共文档getUserGames(字符串用户名)
{
基本b=新的基本();
InputStream xml=b.getmyPStXML(“/rank/”+username+“/xml/”);
返回b.getdoElement(xml);
}
受保护文档doInBackground(字符串…用户名){
返回getUserGames(用户名[0]);
}
}
}

您可以尝试将以下内容放入
getmyPStXML()

而不是

xml = httpResponse.getEntity().getContent();
并查看服务器返回的内容,因为根据堆栈跟踪,并没有足够的数据从服务器读取

它还有助于设置连接/数据接收超时,因为否则,应用程序将等待服务器的答复很长时间,并且可能会显示为已停止或挂起

xml = httpResponse.getEntity().getContent();