public boolean onOptionsItemSelected(MenuItem item) 
{
this.Invalidate();
 switch (item.getItemId())
 {
 case R.id.menu_local:
 LocalAndGetInfo();
 break;
例如在用户点击菜单定位后调用LocalAndGetInfo();这个时候程序会暂时卡死,怎样解决呢?

解决方案 »

  1.   

    主要是LocalAndGetInfo()这个过程耗时间,导致程序卡死,无响应,菜单都不消失,等LocalAndGetInfo这个操作完成后菜单才消失,程序恢复正常。
    是吧LocalAndGetInfo这个做到线程里面呢还是用其他办法呢?
      

  2.   

    LocalAndGetInfo();这个是做什么的呢?如果确定是这个卡,就只能弄个新线程让它运行,否则别的就只能等它执行完了再响应。
      

  3.   

    你是点击menu执行器其余的操作,可以用handler post一个message,然后用thread也好,AsyncTask也好,自己选择了
      

  4.   

    里面除了定位还有访问服务器的操作。
    做线程我有点不会,就是线程里面调用LocalAndGetInfo();这个函数会出错。LocalAndGetInfo些界面资源如:
    LocalAndGetInfo()
    {
    .....
    setTitle(m_strCurCity+"的相关信息");
    ...
    Toast.makeText(this,"正在更新...", Toast.LENGTH_SHORT).show();
    .....
    }如果在线程里面调用运行到上面两句的时候就会出错,怎样解决呢?
      

  5.   

    非UI线程中,不能进行UI操作,你要把UI操作,和非UI操作分开.
      

  6.   


    在线程里面用Handler方式执行LocalAndGetInfo
      

  7.   


    如果分别运行到这两句的时候    分别阻塞线程N长的时间    就OK了!
      

  8.   

    更新UI界面要在UI线程里面操作。耗时的操作放线程里面操作!