Android --Fragment中异步HTTP请求
1、自定义异步Task
/** * 异步获取实时数据 */ public class TimerDataTask extends AsyncTask<Void, Void, Boolean> { @Override protected Boolean doInBackground(Void... params) { String getUrl = mUrl + "/RealTimeData.ashx?type=data"; URL loginUrl = null; InputStream in = null; HttpURLConnection conn = null; //初始化列表 mDataList = new ArrayList<DataListItem>(); try { loginUrl = new URL(getUrl); conn = (HttpURLConnection) loginUrl.openConnection(); conn.setRequestProperty("Charset", "UTF-8"); if (conn.getResponseCode() == 200) { in = new BufferedInputStream(conn.getInputStream()); Scanner scanner = new Scanner(in).useDelimiter("\\A"); String result = scanner.hasNext() ? scanner.next() : ""; Log.e(mLogTimerData,result); } conn.disconnect(); } catch (IOException ex){ Log.e(getString(R.string.log_e_url_error), ex.toString()); }catch (JSONException ex){ Log.e(getString(R.string.log_e_json_error), ex.toString()); } return true; } @Override protected void onPostExecute(final Boolean success) { // Message msg = new Message(); // uiHandler.sendMessage(msg); if(getActivity() != null) { getActivity().runOnUiThread(uiRefreshThread); } mTask=null; } @Override protected void onCancelled() { mTask=null; } }
2、在主线程刷新ListView
Runnable uiRefreshThread =new Runnable() { @Override public void run() { if(getActivity() != null) { //初始化Adapter mAdapter = new DataListAdapter(getActivity() , R.layout.fragment_data_list_item, mDataList); // Set the adapter mListView.setAdapter(mAdapter); mSwipeLayout.setRefreshing(false); mListView.setEnabled(true); } } };
Runnable uiThread = new Runnable(){ @Override public void run(){ mListView.setEnabled(false); } };
3、定时任务
Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { if(getActivity() !=null) { getActivity().runOnUiThread(uiThread); mTask = new TimerDataTask(); mTask.execute((Void) null); } } };
每次刷新都是,重新new一个Adapter对象,使用notifyDataSetChanged(),会出现不定时BUG异常
Android --Fragment中异步HTTP请求的更多相关文章
- 【转】Android Fragment中使用SurfaceView切换时闪一下黑屏的解决办法
重构了下之前自己的一个新闻客户端,全部使用了Fragment来进行页面切换,只有一个入口Activity作为程序的启动Activity,其中有一个界面需要调用摄像头识别二维码, 于是就会用到Surfa ...
- Android Fragment中调用getActivity为null的问题
在使用fragment的时候经常会遇到getActivity()为null的情况.比如我在一个异步网路请求的回调中调用了getActivity()就会出现空指针问题.之前解决这个问题,通常都是直 ...
- Android Fragment中使用Intent组件拍照
要在activity里面去接受,然后传递给fragment对象,fragment有很多回调调用不到 你的设备有摄像头吗? 为了确保市场上的大多数设备都能运行你的程序,必须在项目中做一些检测,保证使用的 ...
- android Fragment中使用Toolbar
在Activity中可以直接使用 setSupportActionBar(toolbar); 就可以重写 onCreateOptionsMenu 和 onOptionsItemSelected 方法: ...
- 使用Fiddler抓取Android模拟器中的Android_APP请求
对Fiddler的设置:在https://www.telerik.com/download/fiddler网站上下载Fiddler,输入内容后点击下面按钮进行下载: 下载成功后,打开Fiddler进行 ...
- Android——Fragment+Editext总结
原文地址: android Fragment中没有onTouchEvent解决方法 Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失,android-- ...
- Android中的异步网络请求
本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关姿势.由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家:) 1. 同步网络 ...
- Android应用开发:LoaderManager在Activity/Fragment中的使用分析
LoaderManager 外部接口initLoader:起始 public <D> Loader<D> initLoader(int id, Bundle args, Loa ...
- Android 在Fragment中执行onActivityResult不被调用的简单解决方法
在Android开发中,我们经常会用到FragmentActivity下嵌套多个Fragment,但是在开发过程中会发现在嵌套的Fragment中使用onActivityResult回调方法没有被执行 ...
随机推荐
- EasyUI datagrid 在ie8和360兼容模式兼容性问题
问题:easyui中的datagrid在ie8和360兼容模式下显示不出来. 答案:不是easyui的问题.是引入的jquery版本问题.jquery-1.5.1抛异常,这个版本是mvc3自带的jqu ...
- Android shell 命令总结
Package Manage(PM) pm list packages [FILTER] 查看已安装的应用包 -f 显示关联的apk文件 -s 只在系统应用中搜索Filter -3 只在第三方应用中搜 ...
- [ZZ] RGBM and RGBE encoding for HDR
Deferred lighting separate lighting rendering and make lighting a completely image-space technique. ...
- iMx280A测试声纹
1.首先要有声纹识别的动态库,且arm-linux-gcc的版本相同.可以在虚拟机用file 命令来看文件的基本信息,通过file指令,我们得以辨 识该文件的类型. 2.用tftp将库传到开发板的li ...
- C#winform项目添加引用编译文件
打开opencv(Emgu for windows)样例,发现有带引用图标的文件 以前还真没见过这种用法,研究了一下: 1.项目版本信息文件内容及添加: 通过修改项目目录下的csproj(c shar ...
- Bootstrap页面布局12 - BS表单元素的排版
首先看看这行代码: <label for='account'>帐 号</label> <input id='account' name='account' type='t ...
- P2672 推销员
贪心,水题 #include <bits/stdc++.h> using namespace std; const int maxn = 1000000; struct house { i ...
- 搭建C语言开发环境
大学的时候有数据结构这门课,但...终究还是得学.电脑是win8的,根据网上的教程倒是能安装成功vc6.0并且能够打开新建工程,但是一编译运行就提示兼容性问题. 首先安装C语言编译器.下载MinGw ...
- App之百度云推送
集成SDK 下载最新的Android SDK压缩包并解压,在新建工程或已有工程中增加百度云推送功能. 我下载的是 ,里面有一个同名的文件夹,文件夹中有 导入云推送jar包和so文件: 将解压后的lib ...
- 【转】c# 解析JSON的几种办法
http://www.cnblogs.com/ambar/archive/2010/07/13/parse-json-via-csharp.html 刚开始只是想找一个转换JSON数组的方法,结果在M ...