示例#1
0
        public override void Cleanup()
        {
            base.Cleanup();

            MapDetailCollection.ForEach(o =>
            {
                o.purls.ForEach(A => A.Dispose());
                o.Dispose();
            });

            MapDetailCollection.Clear();

            DicStore.RemoveKey(AppCommonConst.CURRENT_MAP_ID);
        }
示例#2
0
        public async void GetMapDetail()
        {
            IsBusy = true;

            var backJson = await WebDataHelper.Instance.GetFromUrlWithAuthReturnString(ApiMapRoot.Instance.MapDetailUrl, null, 3);

            if (backJson != null)
            {
                var result = JsonConvertHelper.Instance.DeserializeObject <MapDetailModel>(backJson);
                if (result != null)
                {
                    if (result.data.Count != 0)
                    {
                        result.data.ForEach(A =>
                        {
                            //这里要特殊处理的
                            if (A.urls.Count != 0)
                            {
                                MapDetailCollection.Add(A);
                            }
                        });

                        FileHelper.Instance.SaveTextToFile(CacheConfig.Instance.MapListFileCacheRelativePath, AppCacheNewsFileNameConst.CACHE_MAP_DETAIL_ID_FILENAME, backJson);
                    }
                    else
                    {
                        //这里使用反射
                        RetryBox.Instance.ShowRetry(AppNetworkMessageConst.COLLECTION_ITEM_IS_ZERO, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                    }
                }
                else
                {
                    //加载本地数据
                    var localJson = await FileHelper.Instance.ReadTextFromFile(CacheConfig.Instance.MapListFileCacheRelativePath, AppCacheNewsFileNameConst.CACHE_MAP_DETAIL_ID_FILENAME);

                    if (localJson != null)
                    {
                        var localResult = JsonConvertHelper.Instance.DeserializeObject <MapDetailModel>(localJson);
                        if (localResult != null)
                        {
                            //因为如果第一页获取到的数据为0条时不会写到本地的,所以,从本地获取到的数据条目数一定不为0
                            if (localResult.data.Count != 0)
                            {
                                localResult.data.ForEach(A =>
                                {
                                    //这里要特殊处理的
                                    if (A.urls.Count != 0)
                                    {
                                        MapDetailCollection.Add(A);
                                    }
                                });
                            }
                        }
                        //虽然错误的数据是不会写到本地的,但如果反序列化失败一样会出错
                        else
                        {
                            //如果此时还有网络,说明加载过程出错,提示信息为“加载数据出错,请重试。”
                            if (AppEnvironment.IsInternetAccess)
                            {
                                RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWOTK_IS_ERROR, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                            }
                            //如果没有网络,说明数据加载失败是因为没有网络造成的。提示信息为“没有网络,请确认网络连接。”
                            else
                            {
                                RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWORK_IS_OFFLINE_LOCAL_CACHE_IS_ERROR, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                            }
                        }
                    }
                    else
                    {
                        //如果此时还有网络,说明加载过程出错,提示信息为“加载数据出错,请重试。”
                        if (AppEnvironment.IsInternetAccess)
                        {
                            RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWOTK_IS_ERROR, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                        }
                        //如果没有网络,说明数据加载失败是因为没有网络造成的。提示信息为“没有网络,请确认网络连接。”
                        else
                        {
                            RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWORK_IS_OFFLINE_LOCAL_CACHE_IS_NULL, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                        }
                    }
                }
            }
            else
            {
                //如果此时还有网络,说明加载过程出错,提示信息为“加载数据出错,请重试。”
                if (AppEnvironment.IsInternetAccess)
                {
                    RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWOTK_IS_ERROR, typeof(MyCF.ViewModel.Ency.EncyViewModel), "GetEncyWeapons", null);
                }
                //如果没有网络,说明数据加载失败是因为没有网络造成的。提示信息为“没有网络,请确认网络连接。”
                else
                {
                    //加载本地数据
                    var localJson = await FileHelper.Instance.ReadTextFromFile(CacheConfig.Instance.MapListFileCacheRelativePath, AppCacheNewsFileNameConst.CACHE_MAP_DETAIL_ID_FILENAME);

                    if (localJson != null)
                    {
                        var localResult = JsonConvertHelper.Instance.DeserializeObject <MapDetailModel>(localJson);
                        if (localResult != null)
                        {
                            //因为如果第一页获取到的数据为0条时不会写到本地的,所以,从本地获取到的数据条目数一定不为0
                            if (localResult.data.Count != 0)
                            {
                                localResult.data.ForEach(A =>
                                {
                                    //这里要特殊处理的
                                    if (A.urls.Count != 0)
                                    {
                                        MapDetailCollection.Add(A);
                                    }
                                });
                            }
                            else
                            {
                                RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWORK_IS_OFFLINE_LOCAL_CACHE_IS_NULL, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                            }
                        }
                        //虽然错误的数据是不会写到本地的,但如果反序列化失败一样会出错,又没有网络
                        else
                        {
                            RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWORK_IS_OFFLINE_LOCAL_CACHE_IS_ERROR, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                        }
                    }
                    else
                    {
                        RetryBox.Instance.ShowRetry(AppNetworkMessageConst.NETWORK_IS_OFFLINE_LOCAL_CACHE_IS_NULL, typeof(MyCF.ViewModel.Map.MapDetailViewModel), "GetMapDetail", null);
                    }
                }
            }

            IsBusy = false;
        }