2013-07-22 33 views
0

这是我的Login代码。作为异步任务添加ProgressDialog会降低性能

public void Login_Click(View view) { 
HashMap<String, String> op_Config = XMLParser 
     .parse(LoginActivity.this); 
} 

大约需要4秒才能完成执行。所以我添加了这样的进度对话框。

public void Login_Click(View view) { 
new IsLogedIn().execute(); 
} 

class IsLogedIn extends AsyncTask<String, String, String> 
{ 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    showDialog(progress_bar_type); 
} 
@Override 
protected String doInBackground(String... value) { 
    try 
    { 
     HashMap<String,String> op_Config = XMLParser.parse(LoginActivity.this); 
     finish(); 
     Intent intent=new Intent(LoginActivity.this,MainMenuActivity.class); 
     startActivity(intent); 
    } 
    catch (Exception e) { 
    }    
} 
@Override 
protected void onPostExecute(String file_url) { 
    dismissDialog(progress_bar_type);  
} 
} 

但是现在需要超过1分钟才能完成。

+2

你应该将代码从'完成()''到移动startActivity'到'onPostExecute'方法,因为这些都应该从UI线程发生。 –

+0

谢谢......我明白了。 – Giri

回答

6

尝试做这样的

class IsLogedIn extends AsyncTask<String, String, String> 
    { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     showDialog(progress_bar_type); 
    } 
    @Override 
    protected String doInBackground(String... value) { 
     try 
     { 
      HashMap<String,String> op_Config = XMLParser.parse(LoginActivity.this);  
     } 
     catch (Exception e) { 
     }    
    } 
    @Override 
    protected void onPostExecute(String file_url) { 

    if(dilog.isShowing()){ 
     dismissDialog(progress_bar_type); 
     } 

    finish(); 
    startActivity(new Intent(LoginActivity.this,MainMenuActivity.class));  

    } 
    } 
+0

谢谢。它的工作..请你能解释它的细节? – Giri

+1

当你在后台执行它时,需要时间来完成并开始新的活动......因为UIprocess很难在后台发生,所以请尽量在执行前或执行后执行。不可避免的情况下,只有你不喜欢从后台更新UI ...这一定是你的过程滞后的原因...... –

+1

好的。所以UIProcess将需要很多时间,当我们在背景中做..谢谢。 – Giri