ここに初めて質問を投稿します。私の最初のアプリのプログラミングとコーディングを始めたばかりです。
fetchUpdates()メソッドを持つApplicationクラスファイルがあります。
public synchronized void fetchUpdates() {
String[] mURLs = getURLs();
new DownloadJSONData().execute(mURLs[0], mURLs[1]);
}
DownloadJSONDataはasyncTask
サーバーから更新を取得するものであり、onPostExecute
メソッドはサーバーからのJSON配列を使用してsqliteデータベースを更新します。
アプリのさまざまなコンポーネント(ウィジェットとアクティビティ)がこのメソッドを呼び出して、サーバーから更新を取得し、データベースを更新します。
質問:同期メソッドはUIスレッドとは別のスレッドで実行されますか?DownloadJSONData
もしそうなら、同期fetchUpdates()
メソッドにコードを移動することに問題はないはずですよね?また、サーバーへの接続やサーバーからのデータのダウンロードに問題がある場合は、UIスレッドをブロックするべきではありませんか?
fetchUpdates()
動機:データベースが更新されたかどうかを示すブール値を返すようにメソッドを変更しようとしています。ただし、現在(私が思うに)メソッドはのメソッドのfetchUpdates()
前に終了するため、メソッドはデータベースを更新するための呼び出しを示すことができません。呼び出し後にデータベースが更新された場合、メソッドを呼び出すアプリコンポーネントの動作が異なる必要があります。asyncTask
onPostExecute
fetchUpdates()
DownloadJSONData()
fetchUpdates()
PS私はプログラミングに慣れていないので、簡単で詳細な説明が本当に役に立ちます。
ありがとう!