2013-07-22 35 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