Android 安卓异步工作组关闭

Android 安卓异步工作组关闭,android,android-intent,background,task,Android,Android Intent,Background,Task,您好,我正在使用android。我创建了一个带有异步任务的应用程序,其中一些进程在后台运行。我可以从服务器数据库中获取异步任务中的字符串值,现在我想将其与getStringExtra值进行比较以传递intent。但是当我使用代码时,我可以从数据库和intent中获取字符串,但它强制关闭,并且错误显示空指针异常无法启动活动。是否有任何可能的方法获取OnPostExecute之外的字符串 我用了密码 AsyncTask < Void, Void, Void > t = new As

您好,我正在使用android。我创建了一个带有异步任务的应用程序,其中一些进程在后台运行。我可以从服务器数据库中获取异步任务中的字符串值,现在我想将其与getStringExtra值进行比较以传递intent。但是当我使用代码时,我可以从数据库和intent中获取字符串,但它强制关闭,并且错误显示空指针异常无法启动活动。是否有任何可能的方法获取OnPostExecute之外的字符串

我用了密码

   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活动的值??