実現したいこと
非同期処理でスプレッドシートのセルから値を取得するプログラムを作成しています。
非同期処理中にアプリがフリーズしてしまうため、原因特定と対策を行いたいです。
発生している問題・エラーメッセージ
ExecutorServiceインスタンスをsubmitしたタイミングでアプリがフリーズします。
フリーズはValueRangeインスタンスであるresponseに読み込んだ値を代入するexecuteの実行で発生しています。
しかし、デバッグ中にエラーも出力されないため、詳細な原因がわかりません。
該当のソースコード
Java
1 ExecutorService bar = Executors.newSingleThreadExecutor(); 2 Future<List<String>> future = bar.submit(new Callable<List<String>>(){ 3 public List<String> call(){ 4 HttpTransport transport = AndroidHttp.newCompatibleTransport(); 5 JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 6 mService = new com.google.api.services.sheets.v4.Sheets.Builder( 7 transport, jsonFactory, mCredential) 8 .build(); 9 String spreadsheetId = URL; 10 String range = "data1!A2:E"; 11 List<String> results = new ArrayList<String>(); 12 try{ 13 ValueRange response = mService.spreadsheets().values() 14 .get(spreadsheetId, range) 15 .execute(); 16 List<List<Object>> values = response.getValues(); 17 if (values != null) { 18 results.add("スプレッドシート から読み込んだ値"); 19 for (List row : values) { 20 results.add(row.get(0) + ", " + row.get(1) + ", " + row.get(2) + ", " + row.get(3)); 21 } 22 } 23 return results; 24 }catch(Exception e){ 25 return results; 26 } 27 }}); 28 List<String> result = future.get(); 29
あなたの回答
tips
プレビュー