インターネットからデータを読み取ったときに表示される不確定な進行状況バーがあります。プログレスバーを表示/非表示にするには、その可視性を使用します。プログレスバーのオプションをオンにすると、アプリはネットから15分間データを読み取り、プログレスバーのコードを削除すると20秒続きます。アプリが非常に遅くなる可能性はありますか?
main_activity.xml:
<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>
最初のフラグメント Java コード (これは、ASyncTask から継承するクラス FindSongTask の実行によってネットへの接続をトリガーします):
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 番目のフラグメント (これはネットへの接続後に実行されます):
instance.findViewById(R.id.searchButton).setEnabled(true);
findViewById(R.id.progress_bar).setVisibility(View.GONE);
super.onPostExecute(result);