Android 安卓异步工作组关闭
您好,我正在使用android。我创建了一个带有异步任务的应用程序,其中一些进程在后台运行。我可以从服务器数据库中获取异步任务中的字符串值,现在我想将其与getStringExtra值进行比较以传递intent。但是当我使用代码时,我可以从数据库和intent中获取字符串,但它强制关闭,并且错误显示空指针异常无法启动活动。是否有任何可能的方法获取OnPostExecute之外的字符串 我用了密码Android 安卓异步工作组关闭,android,android-intent,background,task,Android,Android Intent,Background,Task,您好,我正在使用android。我创建了一个带有异步任务的应用程序,其中一些进程在后台运行。我可以从服务器数据库中获取异步任务中的字符串值,现在我想将其与getStringExtra值进行比较以传递intent。但是当我使用代码时,我可以从数据库和intent中获取字符串,但它强制关闭,并且错误显示空指针异常无法启动活动。是否有任何可能的方法获取OnPostExecute之外的字符串 我用了密码 AsyncTask < Void, Void, Void > t = new As
AsyncTask < Void, Void, Void > t = new AsyncTask < Void, Void, Void > () {
@Override
protected Void doInBackground(Void...arg0) {
something code here
return null;
}
@Override
protected void onPostExecute(Void result) {
Log.d("postexe", "p execute");
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2:80/contactcheck.php");
HttpResponse response1 = httpclient.execute(httppost);
HttpEntity entity = response1.getEntity();
is = entity.getContent();
Log.e("log_tag", "connection success ");
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result2 = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
try {
JSONArray jArray = new JSONArray(result2);
Log.w("Lengh", "" + jArray.length());
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
App_id = json_data.getString("app_id");
Log.i("hoiii", App_id);
String key = getIntent().getStringExtra("key");
if (getIntent().hasExtra("key")) {
if (key.equals(App_id)) {
setContentView(R.layout.home);
flag = 1;
}
} else {
finish();
}
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
};
t.execute();
AsyncTaskt=newasynctask(){
@凌驾
受保护的Void doInBackground(Void…arg0){
这里有些代码
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
Log.d(“postexe”、“p execute”);
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://10.0.2.2:80/contactcheck.php");
HttpResponse response1=httpclient.execute(httppost);
HttpEntity entity=response1.getEntity();
is=entity.getContent();
Log.e(“Log_标签”,“连接成功”);
}捕获(例外e){
e(“Log_标记”,“http连接错误”+e.toString());
}
试一试{
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),8;
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
结果2=sb.toString();
}捕获(例外e){
Log.e(“Log_标记”,“错误转换结果”+e.toString());
}
试一试{
JSONArray jArray=新JSONArray(结果2);
Log.w(“Lengh”和“+jArray.length());
for(int i=0;i
因此,我认为我在此处使用的setcontentView有问题。请帮助我找出错误。提前感谢您似乎不明白为什么要使用AsyncTask进行联网。你在doInBackground中建立人际网络。您没有设置严格模式策略。若你们曾经认为你们需要这样做,你们已经把你们的架构搞砸了。你们在后台做什么?似乎您正在执行postExecute中的每个长时间运行的任务。postExecute在UI线程中运行。严格模式是否有问题?如何获取从postExecute到main活动的值??