2012-07-13 1 views
0

인터넷에서 데이터를 읽을 때 표시되는 불확실한 진행 표시 줄이 있습니다. 진행 표시 줄을 표시하거나 사라지려면 표시 여부를 사용합니다. 진행률 표시 줄의 옵션을 켜면 내 앱에서 15 분 동안 인터넷에서 데이터를 읽습니다. 진행률 표시 줄 코드를 제거하면 20 초 동안 지속됩니다. 그것은 내 애플 리케이션을 너무 느리게 만들 가능성이 무엇입니까?불확실성 진행 표시 줄이있는 안드로이드 성능 문제

main_activity.xml :

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button searchButton = (Button) findViewById(R.id.searchButton); 

    searchButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      EditText searchQueryField = (EditText) findViewById(R.id.searchQueryField); 
      String searchQuery = searchQueryField.getText().toString(); 

      if (searchQuery.length() > 0 && (currentQuery == null || !currentQuery.equals(searchQuery))) { 
       new FindSongTask().execute(searchQuery); 
       currentQuery = searchQuery; 

       findViewById(R.id.progress_bar).setVisibility(View.VISIBLE); 
       v.setEnabled(false); 

      } 

      InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(searchQueryField.getWindowToken(), 0); 



     } 
    }); 

} 

2 단편 (이 후에 실행된다

<TableRow 
    android:gravity="center_horizontal" 
    android:layout_marginTop="10dip" 
    android:visibility="gone" 
    android:id="@+id/progress_bar" 
    > 

    <ProgressBar 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxWidth="30dip" 
    android:minWidth="30dip" 
    android:maxHeight="30dip" 
    android:minHeight="30dip" 
    android:indeterminate="true" 
    android:layout_gravity="center_horizontal" 
    /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/searchingInProgress" 
     android:layout_gravity="center|center_horizontal" 
     /> 

</TableRow> 

첫번째 프래그먼트 자바 코드 (이 AsyncTask를 상속 클래스 FindSongTask을하여 그물 실행할 연결을 트리거) 인터넷에 연결) :

instance.findViewById(R.id.searchButton).setEnabled(true); 
findViewById(R.id.progress_bar).setVisibility(View.GONE); 
super.onPostExecute(result); 
+0

ProgressBar와 관련된 코드를 게시하십시오. – Erol

+0

관련 코드를 공유하면 도움이 될 것입니다. 코드를 보지 않고도 내가 할 수있는 것은 추측입니다. [This] (http://www.example.com/)는 귀하의 검색어와 관련이 있습니다. – Pulkit2692

답변

0

시도해보십시오.

public class MyActivity extends Activity{ 

    ProgressDialog pd; 

    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public void onPause() 
    { 
      //don't leak a window 
     super.onPause(); 
     if(pd != null) 
      pd.dismiss(); 
    } 

    //no networking allowed on main thread 
    private class NetworkingTask extends AsyncTask<String,String,String>{ 
     int result; 

     @Override 
     protected void onPreExecute(){ 
      pd = ProgressDialog.show(Login.this,"","Display message...", true,false); 
     } 

     @Override 
     protected String doInBackground(String...strings){ 
      //perform networking here 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String unused){ 
      //check result 
      pd.dismiss(); 
      Intent intent = new Intent(MyActivity.this,NextActivity.class); 
      startActivity(intent); 
     } 
    } 
} 
+0

방금 ​​편집 한 내용을 그대로 적용했습니다. – kspacja

+0

무엇을 편집하셨습니까? 나는 어떤 변화도 보지 못했다. 내가 보여준 방법은 창문이 작동 중에 만 보이도록한다. AsyncTasks가 이런 대화 상자를 처리하도록 만들어졌습니다. – Joel

+0

제 질문에 대한 편집을 의미합니다. – kspacja