【问题标题】:application crashes when I minimize and return to the application the screen turns black当我最小化并返回应用程序时应用程序崩溃屏幕变黑
【发布时间】:2012-09-27 19:23:15
【问题描述】:

当我最小化、关闭 3G 并返回应用程序时,我的应用程序崩溃了。 此应用程序从互联网(SAX 解析器)捕获 XML 信息,然后通过按主页按钮,关闭 3G 并返回应用程序看起来是黑色的。

感谢您的帮助

我的主要代码

    SitesList5101 sitesList5101 = null;


static final int DIALOG_ERROR_CONNECTION = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.xmlultimoterceroo);

    TextView nemotecnico[];
    TextView precio[];
    TextView variacion[];
    TextView ttransado[];
    TextView pcierre[];
    TextView utrans[];

    TableRow tr[] = new TableRow[108];
    TableLayout layout = (TableLayout)findViewById(R.id.layout);


            try{

                SAXParserFactory spf = SAXParserFactory.newInstance();
                SAXParser sp = spf.newSAXParser();
                XMLReader xr = sp.getXMLReader();

                URL sourceUrl = new URL("http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=5101");
                MyXMLHandler5101 myXMLHandler = new MyXMLHandler5101();
                xr.setContentHandler(myXMLHandler);
                xr.parse(new InputSource(sourceUrl.openStream()));

            } catch (Exception e){
                System.out.println("XML PArsing Exc =" +e);
            }




    sitesList5101 = MyXMLHandler5101.sitesList5101;

    nemotecnico = new TextView[sitesList5101.getNemotecnico().size()];
    precio = new TextView[sitesList5101.getPrecio().size()];
    variacion = new TextView[sitesList5101.getVariacion().size()];
    ttransado = new TextView[sitesList5101.getTtransado().size()];
    pcierre = new TextView[sitesList5101.getPcierre().size()];
    utrans = new TextView[sitesList5101.getUtrans().size()];

    for(int i = 0; i < sitesList5101.getRegistro().size(); i++){

        nemotecnico[i] = new TextView(this);
        nemotecnico[i].setText(" "+ sitesList5101.getNemotecnico().get(i));
        nemotecnico[i].setTextColor(Color.parseColor("#000000"));
        nemotecnico[i].setTypeface(null, Typeface.BOLD);


        precio[i] = new TextView(this);
        precio[i].setText(" "+ sitesList5101.getPrecio().get(i));
        precio[i].setTextColor(Color.parseColor("#333333"));
        precio[i].setTypeface(null, Typeface.BOLD);


        variacion[i] = new TextView(this);
        variacion[i].setText(" "+ sitesList5101.getVariacion().get(i));
        variacion[i].setTextColor(Color.parseColor("#000000"));
        variacion[i].setTypeface(null, Typeface.BOLD);


        ttransado[i] = new TextView(this);
        ttransado[i].setText(" "+ sitesList5101.getTtransado().get(i));
        ttransado[i].setTextColor(Color.parseColor("#333333"));
        ttransado[i].setTypeface(null, Typeface.BOLD);


        pcierre[i] = new TextView(this);
        pcierre[i].setText(" "+ sitesList5101.getPcierre().get(i));
        pcierre[i].setTextColor(Color.parseColor("#333333"));
        pcierre[i].setTypeface(null, Typeface.BOLD);

        utrans[i] = new TextView(this);
        utrans[i].setText(" "+ sitesList5101.getUtrans().get(i));
        utrans[i].setTextColor(Color.parseColor("#333333"));
        utrans[i].setTypeface(null, Typeface.BOLD);

        nemotecnico[i].setTextSize(10);
        precio[i].setTextSize(11);
        variacion[i].setTextSize(11);
        ttransado[i].setTextSize(11);
        pcierre[i].setTextSize(11);
        utrans[i].setTextSize(11);

        Pattern pattern = Pattern.compile("^([a-z: ]*)?+(\\+?[0-9]+([,\\.][0-9]*)?)$");
        Matcher matcher = pattern.matcher(sitesList5101.getVariacion().get(i));
        if(!matcher.matches())

        variacion[i].setTextColor(Color.parseColor("#ff0000"));
        else
        variacion[i].setTextColor(Color.parseColor("#006633"));

    }

    int cont = sitesList5101.getNemotecnico().size();

    for(int i =0; i<cont; i++){
        tr[i] = new TableRow(this);

        tr[i].addView(nemotecnico[i], new TableRow.LayoutParams(1));
        tr[i].addView(precio[i], new TableRow.LayoutParams(2));
        tr[i].addView(variacion[i], new TableRow.LayoutParams(3));
        tr[i].addView(ttransado[i], new TableRow.LayoutParams(4));
        tr[i].addView(pcierre[i], new TableRow.LayoutParams(5));


        layout.addView(tr[i], new TableLayout.LayoutParams());

    }
}

/*********  AlertDialog *********************************************/
/*********  AlertDialog *********************************************/

  public boolean isOnline(Context c) {
        ConnectivityManager cm = (ConnectivityManager) c
        .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();

        if (ni != null && ni.isConnected())
          return true;
        else
          return false;
        }

    @Override
    protected Dialog onCreateDialog(int id) {
      Dialog dialog = null;
      switch (id) {
      case DIALOG_ERROR_CONNECTION:
        AlertDialog.Builder errorDialog = new AlertDialog.Builder(this);
        errorDialog.setTitle("Problema de Conexión");
        errorDialog.setMessage("No tiene conexión a internet, es necesario para acceder al contenido");
        errorDialog.setNeutralButton("ACEPTAR",
        new DialogInterface.OnClickListener() {


          public void onClick(DialogInterface dialog, int id) {
            finish();
          }
        });

       AlertDialog errorAlert = errorDialog.create();
       return errorAlert;

      default:
        break;
      }
    return dialog;
    }

    /*********  AlertDialog *********************************************/
    /*********  AlertDialog *********************************************/

public void refrescar8(View view){
    Button button = (Button)findViewById(R.id.button1);

    if (!isOnline(this)) {
        if(view==button)
            button.setBackgroundResource(R.drawable.buttonrefresh7);
      showDialog(DIALOG_ERROR_CONNECTION); //displaying the created dialog.
    } else {
        if(view==button)
            button.setBackgroundResource(R.drawable.buttonrefresh7);
    onRestart();
    }
}

@Override
protected void onRestart() {
    // TODO Auto-generated method stub
    super.onRestart();
    Intent i = new Intent(xml5101.this, xml5101.class);
    startActivity(i);
    finish();
}

}

【问题讨论】:

  • 在android模拟器中不会发送错误,是当我在手机上尝试时,但我认为只有当我最小化时,互联网连接和我尝试同样的事情发生,屏幕保持黑色
  • 如果您禁用网络连接,可能会出现很多情况,例如在您的情况下,数据未完全检索或数据不一致......您可能会在nemotecnico = new TextView[sitesList5101.getNemotecnico().size()]; 收到NullPointerExceptoin所以你需要考虑所有的场景并有效地使用try catch块和null处理。 如果您遇到这种情况,请养成向我们提供堆栈跟踪的习惯,因为这将帮助我们更好地帮助您 :)

标签: android crash minimize


【解决方案1】:

如果关闭 GSM,是否有 WIFI 连接或没有连接到互联网? 如果没有互联网连接,访问 URL 将失败并引发异常,您可以捕获并打印到标准输出。你检查过 LogCat 输出了吗?

【讨论】:

  • 在android模拟器中不会发送错误,但我认为只有当我最小化,互联网连接并且我尝试了同样的事情时,屏幕保持黑色
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多