Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
Android 应用程序因连接速度慢而崩溃_Android_Xml_Android Fragments - Fatal编程技术网

Android 应用程序因连接速度慢而崩溃

Android 应用程序因连接速度慢而崩溃,android,xml,android-fragments,Android,Xml,Android Fragments,我已经用3个选项卡实现了ActionBar TablListener。 每个选项卡都有三个类似的片段,其中包含从同一XML文件填充的listview 我的问题是,每次我在标签之间滑动时,我的XML文件都会被下载,而在连接速度较慢时,我的应用程序每次在标签之间滑动时都会尝试下载XML文件,直到它崩溃。当没有internet连接时,一切正常,我的片段使用最后一个已知的适配器在每个片段中显示ListView 我的下载程序: if(isNetworkAvailable() ){ Log.i("m

我已经用3个选项卡实现了ActionBar TablListener。 每个选项卡都有三个类似的片段,其中包含从同一XML文件填充的listview

我的问题是,每次我在标签之间滑动时,我的XML文件都会被下载,而在连接速度较慢时,我的应用程序每次在标签之间滑动时都会尝试下载XML文件,直到它崩溃。当没有internet连接时,一切正常,我的片段使用最后一个已知的适配器在每个片段中显示ListView

我的下载程序:

if(isNetworkAvailable() ){
    Log.i("mobAppModel", "starting download Task");
    AppDownloadTask download = new AppDownloadTask();
    download.execute();
}else {
    mAdapter = new AppAdapter(getActivity().getApplicationContext(), -1, XMLsourcePullParser.getmobAppModel(getActivity()));
    siteList.setAdapter(mAdapter);
}

return rootView;
AppDownloadTask:

private class AppDownloadTask extends AsyncTask<Void, Void, Void>{
    @Override
    protected Void doInBackground(Void... arg0) {
        //Download the file

           try {                
            Downloader.DownloadFromUrl("http://URL_on_XML_file/", getActivity().openFileOutput("XMLsource.xml", Context.MODE_PRIVATE));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        return null;
    } 
私有类AppDownloadTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(Void…arg0){
//下载该文件
试试{
Downloader.DownloadFromUrl(“http://URL_on_XML_file/,getActivity().openFileOutput(“XMLsource.xml”,Context.MODE_PRIVATE));
}catch(filenotfounde异常){
e、 printStackTrace();
}
返回null;
} 

如何绕过每次下载XML文件,或者如果使用最后一个已知适配器的连接速度较慢?

听起来您的问题是,在下载XML文件之前,您有未初始化的变量。如果它在没有网络连接时起作用,我会创建一个标记mXmlDownloaded。默认值为false。当XML文件为do时Wnload,将其设置为true。在任何地方更改代码,如下所示:

if(isNetworkAvailable() ){
    Log.i("mobAppModel", "starting download Task");
    AppDownloadTask download = new AppDownloadTask();
    download.execute();
}else {
    if(mXmlDownloaded){
        mAdapter = new AppAdapter(getActivity().getApplicationContext(), -1, XMLsourcePullParser.getmobAppModel(getActivity()));
        siteList.setAdapter(mAdapter);
    }
}
改变你使用这些变量的任何其他地方。这样,在你有数据之前你不会使用它们