protected Void doinbackground不执行(String... params) 参数类型必须一样吗?不一样该如何写?

你怎么能传递多个参数到原始的AsyncTask?
+-安卓android,android-asynctask,基元primitive,可变参数varargs-CodeGo.net
你怎么能传递多个参数到原始的AsyncTask?
有相关的问题,这种暨我如何可以通过在2率的AsyncTask类? ,但我排进妄图通过字节的原始拒绝率的AsyncTask的难度,跳我想分享我的发现。这个微妙的是不是把握现有的问题和答案,跳到我想帮助人谁跑入我做兼占星家和他们的痛苦的问题。
现在的问题是这样的:我有多个原语(如太渴望),我想传递给AsyncTask的在后台执行-如何能做到呢? (我的答案...这个挣扎了一段时间后...可以在下面找到。)
本文地址 :CodeGo.net/495279/
-------------------------------------------------------------------------------------------------------------------------
1. 这是(strict讲)不可能通过字节原语的AsyncTask。例如,如果你想执行myTask.execute(long1, long2)并尝试建立private class myTask extends AsyncTask&long, Void, Void&与
protected LocationItemizedOverlay doInBackground(long... params) {...}
请问您对无需重写注想法的跳跃所谓的签名doInBackground哪里(long... params)好像是说“我接受可变数量的多头,暨存储在数组称为PARAMS.a,捐赠'理解什么投诉待提高,但我认为它有背有多大的泛型类Params被定义。
在任何情况下,就可以实现你想要的,没有任何问题 CodeGo.net,只要你正确地投你的原始各自的非原始包装(例如int=&整型,长=&龙等)。其实,愿望需要显式地转换您的原始非原始。java似乎rendelet为你。你只需要设置你的精液的AsyncTask如下(对于多头的例子):
private class MyTask extends AsyncTask&Long, Void, Void& {
protected void doInBackground(Long... params) {
// Do stuff with params, for example:
long myFirstParam = params[0]
你可以一个暨本来想这个类,例如:
MyTask myTask = new MyTask();
myTask.execute(long1, long2);
或任意数量的原始的,你想,只要它们的类型相同。如果你需要传递多种类型的图元,这也可以做到,但是你将需要修改上面:
private class MyTask extends AsyncTask&Object, Void, Void& {
protected void doInBackground(Object... params) {
// Do stuff with params, for example:
long myLongParam = (Long) params[0];
int myIntParam = (Integer) params[1];
这是更灵活,但它需要明确地浇铸到其各自的类型。如果这种灵活性是没有必要的(就是一个单一的数据类型),我坚持到了优先个选项,因为它是稍微更易读。
只是包装的原语在一个简单的容器,并通过,作为一个以AsyncTask的,就像这样:
private static class MyTaskParams {
MyTaskParams(int foo, long bar, double arple) {
this.foo =
this.bar =
this.arple =
private class MyTask extends AsyncTask&MyTaskParams, Void, Void& {
protected void doInBackground(MyTaskParams... params) {
int foo = params[0].
long bar = params[0].
double arple = params[0].
这样调用它:
MyTaskParams params = new MyTaskParams(foo, bar, arple);
MyTask myTask = new MyTask();
myTask.execute(params);
本文标题 :你怎么能传递多个参数到原始的AsyncTask?
本文地址 :CodeGo.net/495279/
Copyright (C) 2014 CodeGo.net我想用post方式访问服务器,为什么总是不成功,求指点 - 开源中国社区
当前访客身份:游客 [
当前位置:
package com.jikexueyuan.
import java.io.BufferedR
import java.io.BufferedW
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.OutputStreamW
import java.net.HttpURLC
import java.net.MalformedURLE
import java.net.URL;
import java.net.URLC
import com.jikexueyuan.httpget.R;
import android.app.A
import android.os.AsyncT
import android.os.B
import android.view.V
public class MainActivity extends Activity {
&@Override
&protected void onCreate(Bundle savedInstanceState) {
&&super.onCreate(savedInstanceState);
&&setContentView(R.layout.activity_main);
&&findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
&&&@Override
&&&public void onClick(View arg0) {
&&&&new AsyncTask&String, Void, Void&(){
&&&&&@Override
&&&&&protected Void doInBackground(String... params) {
&&&&&&try {
&&&&&&&URL url = new URL(params[0]);
&&&&&&&HttpURLConnection connection = (HttpURLConnection) url.openConnection();
&&&&&&&connection.setDoInput(true);
&&&&&&&connection.setDoOutput(true);
&&&&&&&connection.setRequestMethod("POST");
&&&&&&&OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(),"utf-8");
&&&&&&&BufferedWriter bw = new BufferedWriter(osw);
&&&&&&&bw.write("type=data&doctype=json&version=1.1&caseId=1");
&&&&&&&bw.flush();
&&&&&&&InputStream is = connection.getInputStream();
&&&&&&&InputStreamReader isr = new InputStreamReader(is,"utf-8");
&&&&&&&BufferedReader br = new BufferedReader(isr);
&&&&&&&while((line = br.readLine()) != null){
&&&&&&&&System.out.println(line);
&&&&&&&br.close();
&&&&&&&isr.close();
&&&&&&&is.close();
&&&&&&} catch (MalformedURLException e) {
&&&&&&&// TODO Auto-generated catch block
&&&&&&&e.printStackTrace();
&&&&&&} catch (IOException e) {
&&&&&&&// TODO Auto-generated catch block
&&&&&&&e.printStackTrace();
&&&&}.execute("");
&?xml version="1.0" encoding="utf-8"?&
&manifest xmlns:android=""
&&& package="com.jikexueyuan.httpget"
&&& android:versionCode="1"
&&& android:versionName="1.0" &
&&& &uses-sdk
&&&&&&& android:minSdkVersion="14"
&&&&&&& android:targetSdkVersion="19" /&
&&& &uses-permission android:name="android.permission.INTERNET"/&
&&& &application
&&&&&&& android:allowBackup="true"
&&&&&&& android:icon="@drawable/ic_launcher"
&&&&&&& android:label="@string/app_name"
&&&&&&& android:theme="@style/AppTheme" &
&&&&&&& &activity
&&&&&&&&&&& android:name="com.jikexueyuan.httppost.MainActivity"
&&&&&&&&&&& android:label="@string/app_name" &
&&&&&&&&&&& &intent-filter&
&&&&&&&&&&&&&&& &action android:name="android.intent.action.MAIN" /&
&&&&&&&&&&&&&&& &category android:name="android.intent.category.LAUNCHER" /&
&&&&&&&&&&& &/intent-filter&
&&&&&&& &/activity&
&&& &/application&
&/manifest&
请求方法:HTTP POST
请求URL:http://ip:prot/showcase/pic/queryLastPic
功能:查询月签到信息
参数名称&数据类型&中文意思&是否必须&备注
caseId&String&展示柜id&是&
请求示例:
"caseId":"1",
结果报文类型:JSON
结果报文中包含参数:平台返回值信息
成员名称&子成员名称&数据类型&中文意思&是否必须
code&&String &返回代码&必须
msg&&String&返回值&必须
dataList&caseId&String&展示柜Id&必须
&picUrl&String&照片地址&必须
&thumbnailPicUrl&String&照片缩略图地址&必须
&picName&String&照片名称&必须
结果报文示例:
& "code": "1000",
& "data": {
&&& "caseId": "78485",
&&& "picName": "QQ截图47.png",
&&& "picUrl": "2.z0. ",
&&& "thumbnailPicUrl": "2.z0."
& "dataList": [],
& "message": "success",
& "success": ""
项目完整源码& 访问密码 6ad3
共有3个答案
<span class="a_vote_num" id="a_vote_num_
干嘛不用现成的额。。 一直感觉HttpUrlConnect 很难用。特别 Post
--- 共有 1 条评论 ---
怎么用现成的?前辈您用哪些现成的了?望指教谢谢
(9个月前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
你这不是安卓么。。。
--- 共有 1 条评论 ---
(9个月前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
用okhttp框架吧,方法很简单的。自己封装的话老是忘了这里或是那里的close
--- 共有 2 条评论 ---
okhttp是一个Java的库 封装好了网络通信的功能的了
(9个月前)&nbsp&
谢谢前辈,可是您说的是不是只是个工具吧?而我现在是在开发app,需要访问云服务器,并需要用服务器的某些响应值,不知道您的工具是否能帮我实现这个目的
(9个月前)&nbsp&
更多开发者职位上
有什么技术问题吗?
wangzil...的其它问题Android(47)
1、对于耗时的操作,我们的一般方法是开启“子线程”。如果需要更新UI,则需要使用handler
2、如果耗时的操作太多,那么我们需要开启太多的子线程,这就会给系统带来巨大的负担,随之也会带来性能方面的问题。在这种情况下我们就可以考虑使用类AsyncTask来异步执行任务,不需要子线程和handler,就可以完成异步操作和刷新UI。
3、AsyncTask:对线程间的通讯做了包装,是后台线程和UI线程可以简易通讯:后台线程执行异步任务,将result告知UI线程。
4、使用方法:共分为两步,自定义AsyncTask,在耗时的地方调用自定义的AsyncTask。可以参照以下代码示例。
step1:继承AsyncTask&Params,Progress,Result&
& & & & & &Params:输入参数。对应的是调用自定义的AsyncTask的类中调用excute()方法中传递的参数。如果不需要传递参数,则直接设为Void即可。
& & & & & &Progress:子线程执行的百分比
& & & & & &Result:返回&#20540;类型。和doInBackground()方法的返回&#20540;类型保持一致。
step2:实现以下几个方法:执行时机和作用看示例代码,以下对返回&#20540;类型和参数进行说明
& & & & & onPreExecute():无返回&#20540;类型。不传参数
& & & & & doInBackground(Params... params):返回&#20540;类型和Result保持一致。参数:若无就传递Void;若有,就可用Params
& & & & & publishProgress(Params... params):在执行此方法的时候会直接调用onProgressUpdate(Params... values)
& & & & & onProgressUpdate(Params... values):无返回&#20540;类型。参数:若无就传递Void;若有,就可用Progress
& & & & & onPostExecute(Result &result) :无返回&#20540;类型。参数:和Result保持一致。
step3:在调用自定义的AsyncTask类中生成对象;
& & & & & 执行 &:对象.excute(Params... params);
& &1) Task的实例必须在UI thread中创建
&&& 2) execute方法必须在UI thread中调用
&&& 3) 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground=\'#\'& onProgressUpdate(Progress...)这几个方法
&&& 4) 该task只能被执行一次,否则多次调用时将会出现异常
示例代码:
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&vertical&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&Hello , Welcome to Andy's Blog!&/&
android:id=&@&#43;id/download&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&Download&/&
android:id=&@&#43;id/tv&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:text=&当前进度显示&/&
&ProgressBar
android:id=&@&#43;id/pb&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
style=&?android:attr/progressBarStyleHorizontal&/&
&/LinearLayout&
package sn.
import android.content.C
import android.os.AsyncT
import android.util.L
import android.widget.ProgressB
import android.widget.TextV
public class DownloadTask extends AsyncTask&Integer, Integer, String& {
//后面尖括号内分别是参数(线程休息时间),进度(publishProgress用到),返回&#20540; 类型
private Context mContext=null;
private ProgressBar mProgressBar=null;
private TextView mTextView=null;
public DownloadTask(Context context,ProgressBar pb,TextView tv){
this.mContext=
this.mProgressBar=
this.mTextView=
* 第一个执行的方法
* 执行时机:在执行实际的后台操作前,被UI 线程调用
* 作用:可以在该方法中做一些准备工作,如在界面上显示一个进度条,或者一些控件的实例化,这个方法可以不用实现。
* @see android.os.AsyncTask#onPreExecute()
protected void onPreExecute() {
// TODO Auto-generated method stub
Log.d(&sn&, &00000&);
super.onPreExecute();
* 执行时机:在onPreExecute 方法执行后马上执行,该方法运行在后台线程中
* 作用:主要负责执行那些很耗时的后台处理工作。可以调用 publishProgress方法来更新实时的任务进度。该方法是抽象方法,子类必须实现。
* @see android.os.AsyncTask#doInBackground(Params[])
protected String doInBackground(Integer... params) {
// TODO Auto-generated method stub
Log.d(&sn&, &1111111&);
for(int i=0;i&=100;i&#43;&#43;){
mProgressBar.setProgress(i);
publishProgress(i);
Thread.sleep(params[0]);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return &执行完毕&;
* 执行时机:这个函数在doInBackground调用publishProgress时被调用后,UI 线程将调用这个方法.虽然此方法只有一个参数,但此参数是一个数组,可以用values[i]来调用
* 作用:在界面上展示任务的进展情况,例如通过一个进度条进行展示。此实例中,该方法会被执行100次
* @see android.os.AsyncTask#onProgressUpdate(Progress[])
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
Log.d(&sn&, &&);
mTextView.setText(values[0]&#43;&%&);
super.onProgressUpdate(values);
* 执行时机:在doInBackground 执行完成后,将被UI 线程调用
* 作用:后台的计算结果将通过该方法传递到UI 线程,并且在界面上展示给用户
* result:上面doInBackground执行后的返回&#20540;,所以这里是&执行完毕&
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
Log.d(&sn&, &&);
super.onPostExecute(result);
package sn.
import android.app.A
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.ProgressB
import android.widget.TextV
public class AsyncTaskDemoActivity extends Activity {
/** Called when the activity is first created. */
private TextV
private ProgressB
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
private void initView() {
// TODO Auto-generated method stub
tv=(TextView)findViewById(R.id.tv);
pb=(ProgressBar)findViewById(R.id.pb);
download=(Button)findViewById(R.id.download);
download.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
DownloadTask dt=new DownloadTask(AsyncTaskDemoActivity.this,pb,tv);
dt.execute(100);
http://blog.csdn.net/cjjky/article/details/6684959
http://blog.csdn.net/zhenyongyuan123/article/details/5850389
/thread--1.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5741次
排名:千里之外
原创:12篇
转载:56篇
(5)(16)(27)(4)(6)(10)AsyncTask&String,Integer,String&(){
&&&&@Override
&&&&protected
String doInBackground(String... params) {
&&&&&&&&return
&&&&@Override
&&&&protected
onPreExecute() {
&&&&&&&&super.onPreExecute();
&&&&@Override
&&&&protected
onPostExecute(String s) {
&&&&&&&&super.onPostExecute(s);
&&&&@Override
&&&&protected
onProgressUpdate(Integer... values) {
&&&&&&&&super.onProgressUpdate(values);
}.execute(new
String[]{});
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:38083次
积分:1008
积分:1008
排名:千里之外
原创:43篇
转载:123篇
(2)(1)(2)(1)(1)(4)(3)(3)(4)(1)(3)(8)(7)(1)(6)(3)(7)(4)(10)(10)(5)(4)(7)(22)(10)(10)(8)(7)(6)(5)(1)(2)How to solve java.lang.RuntimeException error occured while executing doInBackground()? [如何解决. lang。RuntimeException错误发生在执行doInBackground()?] - 问题-字节技术
How to solve java.lang.RuntimeException error occured while executing doInBackground()?
如何解决. lang。RuntimeException错误发生在执行doInBackground()?
问题 (Question)
I am beginner in android development, I am getting error in following code. I am calling asyn method for http request, before that I am checking Wifi or Mobile Network is available or not. When Internet connection is available My Service is running fine but when in off line mode I ma getting this type of error:
" java.lang.RuntimeException: An error occured while executing doInBackground()"
04-09 19:44:33.057: E/AndroidRuntime(3127): FATAL EXCEPTION: AsyncTask #1
04-09 19:44:33.057: E/AndroidRuntime(3127): java.lang.RuntimeException: An error
occured while executing doInBackground()
04-09 19:44:33.057: E/AndroidRuntime(3127):
android.os.AsyncTask$3.done(AsyncTask.java:278)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.lang.Thread.run(Thread.java:856)
04-09 19:44:33.057: E/AndroidRuntime(3127): Caused by: java.lang.NullPointerException
04-09 19:44:33.057: E/AndroidRuntime(3127):
at com.zoomi_zdc.SERVICES.MyServiceProf$myPostData.doInBackground(MyServiceProf.java:129)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at com.zoomi_zdc.SERVICES.MyServiceProf$myPostData.doInBackground(MyServiceProf.java:1)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at android.os.AsyncTask$2.call(AsyncTask.java:264)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
Below is MyServiceProfile code. In this code first I am checking Internet connectivity and aftr tht If User is offline, data saved in local database and during Internet Connection automatically Update on our server
public class MyServiceProf extends Service {
Timer t = new Timer();
public TimerTask mTimerT
private ConnectivityManager connectivityM
final Handler handler = new Handler();
private int nCounter = 0;
Context context =
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
public void onCreate() {
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
mTimerTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
nCounter++;
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
} else if (mobile.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
Toast.makeText(getBaseContext(),"You are trying to access online content but Internet Connection has been disconnected!!!",Toast.LENGTH_SHORT).show();
Log.d("TIMER", "TimerTask run");
// public void schedule (TimerTask task, long delay, long period)
t.schedule(mTimerTask, 0, 10000); //
public void onDestroy() {
// TODO Auto-generated method stub
t.cancel();
handler.removeCallbacks(mTimerTask);
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), " Stopped", Toast.LENGTH_SHORT).show();
public class myPostData extends AsyncTask&Void, Void, Void& {
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
HttpProfilePost proupdate = new HttpProfilePost();
String mMyprofileImagename[] = DatabaseHalper.mStudentImgNm.get(0).split("/");
File sdcardPathofprofileimg = new File(Environment.getExternalStorageDirectory()+"/data/.System/MProfile/" +mMyprofileImagename[1]);
Bitmap mBitmapimageofMyProfilepic = BitmapFactory.decodeFile(sdcardPathofprofileimg.getAbsolutePath());
DatabaseHalper dbhelper = new DatabaseHalper(getBaseContext());
dbhelper.Get_ZoomiProfile_Data();
proupdate.HttpClient_Profile_Post(context,DatabaseHalper.mStudentRollNo.get(0),
DatabaseHalper.mStudentName.get(0),
DatabaseHalper.mStudentAddress.get(0),
DatabaseHalper.mStudentEmrg_Person.get(0),
DatabaseHalper.mStudentEmrg_No.get(0),
DatabaseHalper.mStudentEmail.get(0),
DatabaseHalper.mStudentBloodGrp.get(0),
DatabaseHalper.mStudentMobileno.get(0),
mBitmapimageofMyProfilepic);
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
My Update on server Http
link code is below:
public class HttpProfilePost {
private JSONObject jsonR
private Bitmap myP
private ByteArrayOutputS
private byte[]
/*private ByteArrayB
private MultipartEntity reqE*/
private InputS
private SharedPreferences mP
private SharedPreferences.Editor mE
private Context mC
private HttpResponse httpR
List&String&
private String image1,image2,image3,image4,image5,image6,image7,image8,image9,image10;
//private String WEBSERVICE_NAME = "Profile_post.aspx";
public JSONObject HttpClient_Profile_Post(Context c,String stud_rollno, String stud_name,String stud_address, String stud_emrgperson, String stud_emrgcontact, String stud_email, String stud_bloodgrp, String stud_mobileno, Bitmap myPhoto){
mContext=c;
mPref = PreferenceManager.getDefaultSharedPreferences(mContext);
HttpClient httpClient = new DefaultHttpClient();
String mStudentUserid= mPref.getString("Userid", "" );
String myImage[] = DatabaseHalper.mStudentImgNm.get(0).split("/");
String profileimagepath = myImage[0];
stud_name = URLEncoder.encode(stud_name);
stud_address = URLEncoder.encode(stud_address);
stud_emrgperson = URLEncoder.encode(stud_emrgperson);
stud_emrgcontact = URLEncoder.encode(stud_emrgcontact);
stud_email = URLEncoder.encode(stud_email);
stud_bloodgrp = URLEncoder.encode(stud_bloodgrp);
HttpPost mURL = new HttpPost("http://10.160.0.18:86/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"&Addi_Notes"+;
String mURL = "http://webservice.zoomi.in/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"&Addi_Notes=abc";
String mURL = "http://webservice.zoomi.in/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"";
String mURL = "http://10.160.0.18:86/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"";
HttpPost postrequest = new HttpPost(mURL);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody fileBody = new FileBody(new File(Environment.getExternalStorageDirectory()+"/data/.System/MProfile/", myImage[1]));// ,"application/octet-stream");
reqEntity.addPart("fileContents", fileBody);
postrequest.setEntity(reqEntity);
// Execute the request "POST"
httpResp = httpClient.execute(postrequest);
/*HttpResponse response =*/
// Check the status code, in this case "created"
//Log.v("App", "Created");
int code = httpResp.getStatusLine().getStatusCode();
System.out.println("Response Code : "+code);
/*if (((HttpResponse) response).getStatusLine().getStatusCode() == HttpStatus.SC_CREATED)
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
int responcecode = httpResp.getStatusLine().getStatusCode();
if(responcecode==200)
Intent stopserviceintnet = new Intent(mContext,MyServiceProf.class);
mContext.stopService(stopserviceintnet);
System.out.print("Your service is stopped...");
MyclassFragment.mbtn_SaveMyProfile.setEnabled(true);
catch (Exception e) {
// TODO: handle exception
QuickaccessFragment.mbtn_SaveMyProfile.setEnabled(true);
catch (Exception e) {
// TODO: handle exception
System.out.print("Your service is running...");
System.out.println(jsonResponse);
return jsonR
Sometimes It works properly but suddenly my apps has been Crashed while wifi or Mobile Internet connection is connected, I think at that time service did not run properly. :(
Waiting for your suggestion, solution and your ideas.
我是初学者在android开发中,我在下面的代码错误。我打电话asyn http请求方法,在那之前我检查无线或移动网络是否可用。当网络连接可用服务正在运行好了但是我什么时候在脱机模式下马英九获得这种类型的错误:& . lang。RuntimeException:执行时出错doInBackground()”04-09 19:44:33.057: E/AndroidRuntime(3127): FATAL EXCEPTION: AsyncTask #1
04-09 19:44:33.057: E/AndroidRuntime(3127): java.lang.RuntimeException: An error
occured while executing doInBackground()
04-09 19:44:33.057: E/AndroidRuntime(3127):
android.os.AsyncTask$3.done(AsyncTask.java:278)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.lang.Thread.run(Thread.java:856)
04-09 19:44:33.057: E/AndroidRuntime(3127): Caused by: java.lang.NullPointerException
04-09 19:44:33.057: E/AndroidRuntime(3127):
at com.zoomi_zdc.SERVICES.MyServiceProf$myPostData.doInBackground(MyServiceProf.java:129)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at com.zoomi_zdc.SERVICES.MyServiceProf$myPostData.doInBackground(MyServiceProf.java:1)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at android.os.AsyncTask$2.call(AsyncTask.java:264)
04-09 19:44:33.057: E/AndroidRuntime(3127):
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
下面是MyServiceProfile代码。在这段代码中第一次我检查网络连接和aftr年中如果离线用户,数据保存在本地数据库,并在网络连接我们的服务器上自动更新public class MyServiceProf extends Service {
Timer t = new Timer();
public TimerTask mTimerT
private ConnectivityManager connectivityM
final Handler handler = new Handler();
private int nCounter = 0;
Context context =
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
public void onCreate() {
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
mTimerTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
nCounter++;
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
} else if (mobile.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
Toast.makeText(getBaseContext(),"You are trying to access online content but Internet Connection has been disconnected!!!",Toast.LENGTH_SHORT).show();
Log.d("TIMER", "TimerTask run");
// public void schedule (TimerTask task, long delay, long period)
t.schedule(mTimerTask, 0, 10000); //
public void onDestroy() {
// TODO Auto-generated method stub
t.cancel();
handler.removeCallbacks(mTimerTask);
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), " Stopped", Toast.LENGTH_SHORT).show();
public class myPostData extends AsyncTask&Void, Void, Void& {
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
HttpProfilePost proupdate = new HttpProfilePost();
String mMyprofileImagename[] = DatabaseHalper.mStudentImgNm.get(0).split("/");
File sdcardPathofprofileimg = new File(Environment.getExternalStorageDirectory()+"/data/.System/MProfile/" +mMyprofileImagename[1]);
Bitmap mBitmapimageofMyProfilepic = BitmapFactory.decodeFile(sdcardPathofprofileimg.getAbsolutePath());
DatabaseHalper dbhelper = new DatabaseHalper(getBaseContext());
dbhelper.Get_ZoomiProfile_Data();
proupdate.HttpClient_Profile_Post(context,DatabaseHalper.mStudentRollNo.get(0),
DatabaseHalper.mStudentName.get(0),
DatabaseHalper.mStudentAddress.get(0),
DatabaseHalper.mStudentEmrg_Person.get(0),
DatabaseHalper.mStudentEmrg_No.get(0),
DatabaseHalper.mStudentEmail.get(0),
DatabaseHalper.mStudentBloodGrp.get(0),
DatabaseHalper.mStudentMobileno.get(0),
mBitmapimageofMyProfilepic);
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}我的更新服务???的Http链接代码如下:public class HttpProfilePost {
private JSONObject jsonR
private Bitmap myP
private ByteArrayOutputS
private byte[]
/*private ByteArrayB
private MultipartEntity reqE*/
private InputS
private SharedPreferences mP
private SharedPreferences.Editor mE
private Context mC
private HttpResponse httpR
List&String&
private String image1,image2,image3,image4,image5,image6,image7,image8,image9,image10;
//private String WEBSERVICE_NAME = "Profile_post.aspx";
public JSONObject HttpClient_Profile_Post(Context c,String stud_rollno, String stud_name,String stud_address, String stud_emrgperson, String stud_emrgcontact, String stud_email, String stud_bloodgrp, String stud_mobileno, Bitmap myPhoto){
mContext=c;
mPref = PreferenceManager.getDefaultSharedPreferences(mContext);
HttpClient httpClient = new DefaultHttpClient();
String mStudentUserid= mPref.getString("Userid", "" );
String myImage[] = DatabaseHalper.mStudentImgNm.get(0).split("/");
String profileimagepath = myImage[0];
stud_name = URLEncoder.encode(stud_name);
stud_address = URLEncoder.encode(stud_address);
stud_emrgperson = URLEncoder.encode(stud_emrgperson);
stud_emrgcontact = URLEncoder.encode(stud_emrgcontact);
stud_email = URLEncoder.encode(stud_email);
stud_bloodgrp = URLEncoder.encode(stud_bloodgrp);
HttpPost mURL = new HttpPost("http://10.160.0.18:86/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"&Addi_Notes"+;
String mURL = "http://webservice.zoomi.in/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"&Addi_Notes=abc";
String mURL = "http://webservice.zoomi.in/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"";
String mURL = "http://10.160.0.18:86/Service.svc/testpersondatapost?uid="+mStudentUserid+"&stdname="+stud_name+"&stdmail="+stud_email+"&Add="+stud_address+"&Qual=xyz&Qual_add=abc&pro_expert=abc&achieve=abc&Cont_no="+stud_mobileno+"&othr1=abc&othr2=abc&othr3=abc&proimgpath="+profileimagepath+"&UT=Student&Emer_ContPer="+stud_emrgperson+"&Emer_Cont_no="+stud_emrgcontact+"&Bld_Grp="+stud_bloodgrp+"";
HttpPost postrequest = new HttpPost(mURL);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
FileBody fileBody = new FileBody(new File(Environment.getExternalStorageDirectory()+"/data/.System/MProfile/", myImage[1]));// ,"application/octet-stream");
reqEntity.addPart("fileContents", fileBody);
postrequest.setEntity(reqEntity);
// Execute the request "POST"
httpResp = httpClient.execute(postrequest);
/*HttpResponse response =*/
// Check the status code, in this case "created"
//Log.v("App", "Created");
int code = httpResp.getStatusLine().getStatusCode();
System.out.println("Response Code : "+code);
/*if (((HttpResponse) response).getStatusLine().getStatusCode() == HttpStatus.SC_CREATED)
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
int responcecode = httpResp.getStatusLine().getStatusCode();
if(responcecode==200)
Intent stopserviceintnet = new Intent(mContext,MyServiceProf.class);
mContext.stopService(stopserviceintnet);
System.out.print("Your service is stopped...");
MyclassFragment.mbtn_SaveMyProfile.setEnabled(true);
catch (Exception e) {
// TODO: handle exception
QuickaccessFragment.mbtn_SaveMyProfile.setEnabled(true);
catch (Exception e) {
// TODO: handle exception
System.out.print("Your service is running...");
System.out.println(jsonResponse);
return jsonR
}有时它能正常工作,但突然我的应用程序已经坠毁无线或移动互联网连接连接,当时我觉得服务不正常运行。(等待你的建议,解决方案和你的想法。谢谢。
最佳答案 (Best Answer)
04-09 19:44:33.057: E/AndroidRuntime(3127): Caused by: java.lang.NullPointerException
04-09 19:44:33.057: E/AndroidRuntime(3127):
at com.zoomi_zdc.SERVICES.MyServiceProf$myPostData.doInBackground(MyServiceProf.java:129)
according to those 2 lines you have a Null pointer at line 129 of your code.
Go to that line, check what is being done, find the object that is null and fix it.
That's debugging 101.
04-09 19:44:33.057: E/AndroidRuntime(3127): Caused by: java.lang.NullPointerException
04-09 19:44:33.057: E/AndroidRuntime(3127):
at com.zoomi_zdc.SERVICES.MyServiceProf$myPostData.doInBackground(MyServiceProf.java:129)
答案 (Answer) 2
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
mTimerTask = new TimerTask() {
public void run() {
nCounter++;
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
} else if (mobile.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
Toast.makeText(getBaseContext(),"You are trying to access online content but Internet Connection has been disconnected!!!",Toast.LENGTH_SHORT).show();
Log.d("TIMER", "TimerTask run");
// public void schedule (TimerTask task, long delay, long period)
t.schedule(mTimerTask, 0, 10000); //
remove handler() in your service .. you will not get this error again.. please make changes in your code as follows.
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
mTimerTask = new TimerTask() {
public void run() {
nCounter++;
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
} else if (mobile.isAvailable()) {
mTimerTask.cancel();
new myPostData().execute();
}catch (Exception e) {
// TODO: handle exception
Toast.makeText(getBaseContext(),"You are trying to access online content but Internet Connection has been disconnected!!!",Toast.LENGTH_SHORT).show();
Log.d("TIMER", "TimerTask run");
// public void schedule (TimerTask task, long delay, long period)
t.schedule(mTimerTask, 0, 10000); //
本文翻译自StackoverFlow,英语好的童鞋可直接参考原文:}

我要回帖

更多关于 doinbackground返回值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信