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回调方法没有被执行 ...
随机推荐
- PHP文件漏桐可以通过对服务器进行设置和配置来达到防范目的
对脚本执行漏洞的防范 黑客利用脚本执行漏洞进行攻击的手段是多种多样的,而且是灵活多变的,对此,必须要采用多种防范方法综合的手段,才能有效防止黑客对脚本执行漏洞进行攻击.这里常用的方法方法有以下四种.一 ...
- JBoss错误
jboss进程在启动时碰到Address already in use: JVM_Bind /0.0.0.0:8080错误. 这个错误的含义是8080端口被占用了. 解决方法: 方法1: 开始--运行 ...
- CSS与JavaScript文件的位置
1.CSS 尽量放置在head标签中. 原因: 避免浏览器重新渲染: 避免阻塞JS文件的执行. 注:CSS选择器的解释顺序是 从右向左 的,所以尽量减少选择器的层级. 2.JS 尽量放置在</b ...
- MongoDB数据备份与恢复
测试环境:windows 一. 导出数据F:\DbSoft\soft\master\bin>mongoexport /h 127.0.0.1 /port 50000 /d testdb /c t ...
- [听听音乐]love is blue
在朋友圈里听到这首歌,好像是中央台天气预报用过的背景音乐.百度了一下,大致如下: 1967年,在维也纳举行的欧洲电视歌唱大赛,卢森堡歌手薇基·琳德洛丝(Vicky Leandros)演唱了一首由彼埃尔 ...
- Bootstrap页面布局23 - BS折叠内容
<div class='container-fluid'> <h3 class='page-header'>Bootstrap 折叠内容</h3> <!--如 ...
- [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
http://www.csdn.net/article/2015-07-31/2825348 [编者按]时下,对于大部分IT玩家来说,Docker和Mesos都是熟悉和陌生的:熟悉在于这两个词无疑已成 ...
- PROCESS STATES
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION To understand the ope ...
- Natural Language Toolkit
http://www.nltk.org/ >>> import nltk >>> nltk.download()
- IIS7 .NET Runtime version 2.0.50727.5420 - 执行引擎错误(000007FEE77AAF0E) (80131506)
装完系统,配置完IIS,发现.NET程序报503错误,出错后连接池自动关闭 这个程序是需要连接access数据库的,打开系统日志发现错误如下: 错误应用程序名称: w3wp.exe,版本: 7.5.7 ...