Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 在android中下载网页的最快方式?_Java_Android_Android Asynctask - Fatal编程技术网

Java 在android中下载网页的最快方式?

Java 在android中下载网页的最快方式?,java,android,android-asynctask,Java,Android,Android Asynctask,主要的问题是一切都很好。但它没有反应。显示结果需要时间。我如何使它足够快,以更快地获得结果 单个活动中有三个异步任务。。一个用于自动特写视图更改。每当用户输入一些文本时,它就会调用AsynTask函数 AutoTextView textChangeListener。。当用户输入某个内容时,它会调用它 textView.addTextChangedListener(new TextWatcher() { @Override public void

主要的问题是一切都很好。但它没有反应。显示结果需要时间。我如何使它足够快,以更快地获得结果

单个活动中有三个异步任务。。一个用于自动特写视图更改。每当用户输入一些文本时,它就会调用AsynTask函数

AutoTextView textChangeListener。。当用户输入某个内容时,它会调用它

textView.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2,
                    int arg3) {

                seq = cs;

            }

            @Override
            public void beforeTextChanged(CharSequence s, int arg1, int arg2,
                    int arg3)
            {

            }

            @Override
            public void afterTextChanged(Editable arg0)
            {
                new SearchTask().execute(seq.toString().trim());
            }
        });
autoTextview的异步任务为

private class SearchTask extends AsyncTask<CharSequence, Void, String> 
    {

        ArrayAdapter<String> adapter;

        String[] array;

        @Override
        protected void onPreExecute() 
        {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(CharSequence... params) 
        {
            try {
                HttpClient httpclient = new DefaultHttpClient();

                HttpPost httppost = new HttpPost(pak_url + params[0]);

                HttpResponse responce = httpclient.execute(httppost);

                HttpEntity httpEntity = responce.getEntity();

                String response = EntityUtils.toString(httpEntity);

                Log.d("response is", response);

                if (response != null) {
                    String substr = response.split("\\(")[2].split("\\)")[0];

                    array = substr.split(",");

                    for (int i = 0; i < array.length; i++) {

                        array[i] = array[i].replace("'", "");
                    }

                }

                return response;
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            if (array != null) {
                adapter = new ArrayAdapter<String>(PlayListActivity.this,
                        android.R.layout.simple_list_item_1, array);

                textView.setAdapter(adapter);

                adapter.getFilter().filter(seq);
            } 
私有类SearchTask扩展了异步任务
{
阵列适配器;
字符串[]数组;
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
}
@凌驾
受保护字符串doInBackground(字符序列…参数)
{
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(pak_url+参数[0]);
HttpResponse response=httpclient.execute(httppost);
HttpEntity HttpEntity=response.getEntity();
字符串响应=EntityUtils.toString(httpEntity);
Log.d(“响应为”,响应);
if(响应!=null){
String substr=response.split(“\\”[2]。split(“\\”)”[0];
数组=子字符串拆分(“,”);
for(int i=0;i
第二个AsyncTask下载整个网页并将其存储在字符串中..当收到字符串时.向其添加autotextview文本并调用另一个AsyncTask..一切正常..但不知道它为什么这么慢..有人指导我如何使其响应.而且很快

class RetrieveFeedTask extends AsyncTask<String, Void, String> 
    {   
        @Override
        protected void onPreExecute() 
        {
            super.onPreExecute();

            Utilities.hideSoftKeyboard(PlayListActivity.this);

            progressDialog = ProgressDialog.show(PlayListActivity.this,
                    "Loading...", "Please wait...");
        }

        @Override
        protected String doInBackground(String... urls) {
            try {
                URL url= new URL(urls[0]);

                URLConnection conn = url.openConnection();

                // open the stream and put it into BufferedReader
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));

                String inputLine;
                String HTML_response = "";  
                while ((inputLine = br.readLine()) != null) {
                    // System.out.println(inputLine);
                    HTML_response += inputLine;
                }
                br.close();

                System.out.println("Done");

                return HTML_response;
            } /*catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }*/catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }

        @Override
        protected void onPostExecute(String feed)
        {
            super.onPostExecute(feed);

            Parser(feed);

            progressDialog.dismiss();
        }
    }

    @SuppressLint("NewApi")
    void Parser(String x) 
    {
        if (x.contains(spliter_start))
        {
            if (spliter_end.isEmpty())
            {
                x = x.substring(x.indexOf(spliter_start));
            }
            else
            {
                x = x.substring(x.indexOf(spliter_start),
                        x.indexOf(spliter_end));
            }

        }

        int i = 0;
        list.clear();
        while (x.contains(loop_controller) && i<50)
        {
            /*if (i > 50)
            {
                break;
            }*/

            HashMap<String, String> map = new HashMap<String, String>();

            x = x.substring(x.indexOf(song_start));


            map.put("songsName",x.substring(
                    x.indexOf(song_start) + song_start.length(),
                    x.indexOf(song_end)));// songsName.get(i));

            x = x.substring(x.indexOf(song_url_start));

            map.put("songsUrl",x.substring(
                    x.indexOf(song_url_start) + song_url_start.length(),
                    x.indexOf(song_url_end)));// songsUrl.get(i));


            list.add(map);

            i++;
        }

        PlayListAdapter adapter = new PlayListAdapter(
                PlayListActivity.this, list);

        list_of_songs.setAdapter(adapter);

    }
class RetrieveFeedTask扩展了AsyncTask
{   
@凌驾
受保护的void onPreExecute()
{
super.onPreExecute();
hideSoftKeyboard(playlayActivity.this);
progressDialog=progressDialog.show(播放活动.this,
“正在加载…”,“请稍候…”);
}
@凌驾
受保护的字符串doInBackground(字符串…URL){
试一试{
URL=新URL(URL[0]);
URLConnection conn=url.openConnection();
//打开流并将其放入BufferedReader
BufferedReader br=新的BufferedReader(
新的InputStreamReader(conn.getInputStream());
字符串输入线;
字符串HTML_response=“”;
而((inputLine=br.readLine())!=null){
//系统输出打印LN(输入线);
HTML_响应+=输入行;
}
br.close();
系统输出打印项次(“完成”);
返回HTML_响应;
}/*捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}*/捕获(例外e){
e、 printStackTrace();
返回null;
}
}
@凌驾
受保护的void onPostExecute(字符串馈送)
{
super.onPostExecute(提要);
语法分析器(feed);
progressDialog.disclose();
}
}
@SuppressLint(“新API”)
void解析器(字符串x)
{
如果(x.contains(spliter_start))
{
if(spliter\u end.isEmpty())
{
x=x.substring(x.indexOf(spliter_start));
}
其他的
{
x=x.substring(x.indexOf(拆分器启动),
x、 indexOf(spliter_end));
}
}
int i=0;
list.clear();
而(x.contains(回路控制器)和i&50)
{
打破
}*/
HashMap=newHashMap();
x=x.substring(x.indexOf(song_start));
map.put(“songsName”,x.子字符串(
x、 索引of(song_start)+song_start.length(),
x、 indexOf(song_end));//songsName.get(i));
x=x.substring(x.indexOf(song\u url\u start));
map.put(“songsUrl”,x.子字符串(
x、 索引of(song\u url\u start)+song\u url\u start.length(),
x、 indexOf(song_url_end));//songsUrl.get(i));
列表。添加(地图);
i++;
}
playliadapter=新的playliadapter(
播放列表(活动。此,列表);
歌曲列表。设置适配器(适配器);
}
有谁能告诉我如何使其快速响应..或者告诉我一种比AsyncTask更好的方法..并请告诉我如何使用thread下载网页。或者是更好还是我使用其他方法

任何人都可以通过查看代码来帮助我,并告诉我如何快速完成。有人告诉我使用HttpClient类而不是UrlConnection。哪一个更好。我的应用程序运行缓慢,是否存在任何错误

先谢谢你