ここに初めて質問を投稿します。私の最初のアプリのプログラミングとコーディングを始めたばかりです。
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()前に終了するため、メソッドはデータベースを更新するための呼び出しを示すことができません。呼び出し後にデータベースが更新された場合、メソッドを呼び出すアプリコンポーネントの動作が異なる必要があります。asyncTaskonPostExecutefetchUpdates()DownloadJSONData()fetchUpdates()
PS私はプログラミングに慣れていないので、簡単で詳細な説明が本当に役に立ちます。
ありがとう!