`

android 后台处理数据+进度条

 
阅读更多

map中可以获取逐条数据.

package com.google.zxing.client.android.util;

import java.util.HashMap;
import java.util.Map;

public class MapUtil {

// 接收服务端的map,从map中可以获取逐条数据.
public static Map<String, String> getMap(String a) {
Map<String, String> goods = new HashMap<String, String>();
String[] str = a.trim().split("¥n/¥");
for (int i = 0; i < str.length; i++) {
String[] str1 = str[i].trim().split("¥n");
if (str1.length > 1) {
goods.put(str1[0], str1[1]);
} else {

goods.put(str1[0], "");

}
}
return goods;
}


}


/**
* 使用异步类上传数据 这里面请求服务器并且在数据传递结束后关闭了进度条
*/
private class DoPOst extends AsyncTask<Void, Integer, Void> {

String s;

// 接收服务端已Map形式传来的字符串
private Map<String, String> goods;

@Override
protected Void doInBackground(Void... arg0) {

try {
s = queryBFMW(resultNum);
Log.i("Other", "服务端查询后结果-------"+s+"------");
goods = MapUtil.getMap(s);

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

@Override
protected void onPostExecute(Void result) {
dialog.dismiss();
if (s == null || "".equals(s) || "网络异常".equals(s)) {
Toast.makeText(getApplicationContext(), "抱歉,未查到数据", 1)
.show();

} else {
/**
* 接收服务端字符串,通过Key 接收Value.
*/
String checkNum = goods.get("checking");

String codeContent = goods.get("code");
String kymtContent = goods.get("kymt");


if ("0".equals(checkNum.trim())) {
Toast.makeText(Zs.this, "..........!", 1).show();
return;
} else if ("1".equals(checkNum.trim())) {

if("null".equals(kymtContent)||"".equals(kymtContent) || kymtContent == null ){
return;
}else
// if("hsm".equalsIgnoreCase(checkNum))
{
kymtNumber = Integer.parseInt(kymtContent.trim());
Log.i("Other", "-----"+kymtNumber+"----------");
}

if (codeContent == null || "".equals(codeContent)) {
Toast.makeText(getApplicationContext(), ".........",
1).show();

return;
}

if (goods != null) {

hsmEt.setText(codeContent);
}

}
else if ("2".equals(checkNum.trim())) {
Toast.makeText(getApplicationContext(), ".....", 1).show();
return;
}
else if ("3".equals(checkNum.trim())) {
Toast.makeText(getApplicationContext(), ".....!", 1).show();
return;
}




/**
* 处理其他问题
*/
else {

}
}

super.onPostExecute(result);
}
}
/**
*
* @param resultNum
* @return
*/
private String queryBFMW(String resultNum) {
String ss = resultNum;
String url = HttpUtil.BASE_URL
+ "/servlet/HsmCodeServlet?type=sjzsmw&hsmCode=" + resultNum
+ "&userID=" + userName + "&typeName=bf";
Log.i("Other", "------"+url+"-----------");
return HttpUtil.queryStringForPost(url);
}

以下为进度条实现

private AlertDialog dialog;

// 显示对话框
View view = LayoutInflater.from(getApplicationContext()).inflate(
R.layout.progress_dialog, null);
dialog = new AlertDialog.Builder(this).setView(view).create();
dialog.show();

// 初始化
DoPost doPost = new DoPost();
doPost.execute();

progress_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ProgressBar
android:id="@+id/progress_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/bbs_progress" />

<TextView
android:id="@+id/processText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/progress_icon"
android:layout_alignTop="@+id/progress_icon"
android:layout_toRightOf="@+id/progress_icon"
android:gravity="center"
android:text="请稍后..." >
</TextView>

</RelativeLayout>

bbs_progress.xml

<?xml version="1.0" encoding="UTF-8"?>
<rotate
android:drawable="@drawable/bbs_waiting"
android:useLevel="true"
android:fromDegrees="0.0"
android:toDegrees="360.0"
android:pivotX="50.0%"
android:pivotY="50.0%"
xmlns:android="http://schemas.android.com/apk/res/android" />

bbs_btn_check.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ProgressBar
android:id="@+id/progress_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/bbs_progress" />

<TextView
android:id="@+id/processText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/progress_icon"
android:layout_alignTop="@+id/progress_icon"
android:layout_toRightOf="@+id/progress_icon"
android:gravity="center"
android:text="请稍后..." >
</TextView>

</RelativeLayout>

分享到:
评论

相关推荐

    Android 多线程下载+UI进度条刷新

    在Android系统中,主线程(UI线程)主要负责处理用户界面交互,而后台任务如网络请求、数据处理等通常不应在主线程中执行,因为这会阻塞UI更新,导致应用无响应(ANR)。因此,我们需要使用子线程(也称工作线程)来...

    Android-Android仿应用宝下载进度条

    在Android开发中,创建一个与应用宝类似的下载进度条是一个常见的需求,这涉及到自定义View、多线程处理以及UI更新等技术。本项目"Android-Android仿应用宝下载进度条"旨在实现一个类似应用宝App中的下载进度条效果...

    android 文件上传含进度条

    总的来说,"android 文件上传含进度条"这个话题涵盖的知识点包括Android文件操作、网络编程、异步任务处理、UI更新机制以及可能的通知栏管理。理解并掌握这些,对于Android开发者来说至关重要,尤其是在优化用户体验...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    在Android开发中,文件复制和进度条的显示是常见的需求,尤其在移动应用中,用户可能需要将数据从一个位置移动到另一个位置,或者在后台下载文件时展示进度。`ProgressDialog`是Android SDK提供的一种对话框组件,...

    Android-一个Android进度条通过单一方法与ViewPager相关联

    在Android应用开发中,UI设计和用户体验是至关重要的部分,其中进度条(ProgressBar)作为反馈应用处理过程的组件,有着举足轻重的地位。本文将深入探讨如何通过一种简单的方法将进度条与ViewPager关联,以实现更...

    Android 多文件下载进度条

    在Android开发中,实现多文件下载并展示...综上所述,实现Android多文件下载并显示进度条涉及了网络请求、多线程、文件IO、数据持久化、UI更新、错误处理等多个技术点。合理的设计和实现可以提供流畅且可靠的下载体验。

    Android菊花对话框,菊花进度条

    这种视觉元素让用户知道应用程序正在处理数据或执行任务,提高了用户对等待时间的容忍度。在Android中,我们可以通过实现自定义控件来创建这种效果。 自定义控件是Android开发中的一种高级技巧,允许开发者根据需求...

    Android中点击下载的进度条

    对于后台下载,可以使用Android的通知系统来展示下载进度和状态,让用户在不打开应用的情况下也能了解下载情况。 通过以上这些知识点的结合,我们可以创建一个功能完善的下载进度条,提供用户友好的下载体验。在...

    android dialog ——ProgressDialog 进度条对话框详解

    在Android开发中,ProgressDialog是一个非常常用的组件,它用于在用户执行长时间操作时显示一个带有进度条的对话框,提供一种良好的用户体验,让用户知道系统正在后台处理任务。在本篇文章中,我们将深入探讨...

    Android Handler模拟进度条更新

    在Android开发中,UI线程(主线程)是负责处理用户交互和绘制界面的线程,而大部分网络请求、数据库操作等耗时任务通常在后台线程执行。由于Android的单线程模型,直接在后台线程更新UI是不允许的,这时就需要用到...

    Android更新下载进度条 demo

    在下载过程中,我们可以在`doInBackground`方法中处理网络请求和数据读取,然后在`onProgressUpdate`方法中传递进度值到主线程,用于更新通知栏中的进度条。 在实际的下载过程中,可能还需要处理一些细节,例如错误...

    安卓Android源码——(ProgressBar进度条).rar

    当进度更新涉及后台任务时,通常会使用AsyncTask或LiveData等异步处理机制,确保UI线程不被阻塞,提供流畅的用户体验。 10. **Android Studio调试**: 使用Android Studio的Layout Inspector工具,可以实时查看...

    Android进度条实例测试

    Android的Loader框架也提供了对进度反馈的支持,可以和进度条结合使用,实现后台数据加载时的进度显示。 9. **Material Design的进度条** 随着Android Material Design的引入,进度条有了新的设计规范和动画效果...

    android网络加载显示进度条

    在Android开发中,当应用程序需要从网络下载数据时,为了提供良好的用户体验,通常会使用进度条(ProgressDialog)来展示加载状态。"android网络加载显示进度条"这一主题主要涉及两个关键概念:ProgressDialog和多...

    android 进度条整理

    Loader框架提供了一种管理后台数据加载的方式,同时支持在UI上显示加载进度。使用`LoaderManager`和`Loader`接口,开发者可以轻松地将进度信息绑定到进度条上。 六、使用Notification显示进度 对于后台服务或前台...

    Android 长形进度条的实现

    在适当的地方调用`updateProgress()`方法,例如在后台任务完成后或接收到新数据时。确保在主线程中更新UI以避免线程安全问题。 总结来说,实现这个长形进度条的关键在于自定义布局资源和进度条的绘图,以及根据...

    android 很简单的进度条显示的demo

    总之,这个“android 很简单的进度条显示的demo”通过创建线程和使用Handler,实现了在后台执行任务的同时更新UI上的进度条,为开发者提供了一个基础的进度反馈机制。理解并熟练掌握这种技术对于优化Android应用的...

    Android 进度条对话框Demo.rar

    在Android开发中,进度条对话框(ProgressDialog)是一种常见的用户界面元素,用于向用户展示一个操作的进度,比如数据加载、文件下载或后台任务执行。这个"Android 进度条对话框Demo"很可能是包含了一个示例项目,...

    android下载文件进度条时时更新

    Android中的异步任务类(AsyncTask)用于在后台线程执行耗时操作,例如文件下载,同时在主线程更新UI,如进度条。创建一个继承自AsyncTask的类,其中`doInBackground()`方法负责下载操作,`onProgressUpdate()`更新...

    Android FTP上传带进度条DEMO

    7. **异步处理**:由于FTP操作可能耗时较长,为了保持应用的响应性,通常会将FTP任务放在后台线程执行,比如使用`AsyncTask`。这样可以防止UI冻结,提供更好的用户体验。 8. **权限申请**:在Android 6.0(API级别...

Global site tag (gtag.js) - Google Analytics