アプリケーションの最初の起動時にテーブルの作成や 720 行の挿入などの特定の操作を実行しようとしていますが、これには時間がかかるため、バックグラウンドで実行することにしました。以下のコードを参照してください。
MainActivity.java
DatabaseHandler dbhandler = new DatabaseHandler(this);
this.progressDialog = ProgressDialog.show(this, "Please wait...",
"Downloading Passengers Information...", true, false);
new DownloadTask().execute();
private class DownloadTask extends AsyncTask<String, Void, Object> {
@Override
protected Object doInBackground(String... args) {
for (int i = 1; i <= 5; i++) {
for (int j = 0; j < 11; j++) {
value = jedis.hget("passengerInfo",
String.valueOf(i + (char) (asciiA) + j)); //this will get the data from hash table passengerInfo created in Redis
if (value != null) {
addSeat = String.valueOf(i + (char) (asciiA) + j);
paxInfo = value.split(",");
passName = paxInfo[0];
passAge = Integer.parseInt(paxInfo[1]);
passGender = Integer.parseInt(paxInfo[2]);
passFoodPref = paxInfo[3];
dbhandler.addPassengerInfo(new PassengerInfo(addSeat,
passName, passAge, passGender, passFoodPref));
}
else {
addSeat = String.valueOf(i + (char) (asciiA) + j);
passName = "NA";
passAge = 0;
passGender = -1;
passFoodPref = "NA";
dbhandler.addPassengerInfo(new PassengerInfo(addSeat,
passName, passAge, passGender, passFoodPref));
}
}
}
return null;
}
@Override
protected void onPostExecute(Object result) {
// Pass the result data back to the main activity
MainActivity.this.data = result;
if (MainActivity.this.progressDialog != null) {
MainActivity.this.progressDialog.dismiss();
}
}
}
これを実行すると、logcat に次のエラーが表示されます。
01-23 21:29:06.206: E/AndroidRuntime(704): FATAL EXCEPTION: AsyncTask #1
01-23 21:29:06.206: E/AndroidRuntime(704): java.lang.RuntimeException: An error occured while executing doInBackground()
助けてください !
参考: Logcat 全体
01-23 21:53:15.807: E/AndroidRuntime(742): android.os.AsyncTask$3.done(AsyncTask.java:200) 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.FutureTask$Sync.innerSetException (FutureTask.java:274) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.FutureTask.setException (FutureTask.java:125) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.FutureTask.run (FutureTask.java:138) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1088) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.lang.Thread.run(Thread.java:1019) で 01-23 21:53:15.807: E/AndroidRuntime(742): 原因: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: 接続タイムアウト 01-23 21:53:15.807: E/AndroidRuntime (742): redis.clients.jedis.Connection.connect (Connection.java:134) で 01-23 21:53:15.807: E/AndroidRuntime (742): redis.clients.jedis.BinaryClient.connect (BinaryClient.java:69) で 01-23 21:53:15.807: E/AndroidRuntime (742): redis.clients.jedis.Connection.sendCommand (Connection.java:79) で 01-23 21:53:15.807: E/AndroidRuntime(742): redis.clients.jedis.BinaryClient.hget (BinaryClient.java:212) で 01-23 21:53:15.807: E/AndroidRuntime(742): redis.clients.jedis.Client.hget (Client.java:138) で 01-23 21:53:15.807: E/AndroidRuntime(742): redis.clients.jedis.Jedis.hget (Jedis.java:680) で 01-23 21:53:15.807: E/AndroidRuntime(742): android.jedisconnectiontest.com.MainActivity$DownloadTask.doInBackground(MainActivity.java:118) で 01-23 21:53:15.807: E/AndroidRuntime(742): android.jedisconnectiontest.com.MainActivity$DownloadTask.doInBackground(MainActivity.java:1) で 01-23 21:53:15.807: E/AndroidRuntime(742): android.os.AsyncTask$2.call(AsyncTask.java:185) 01-23 21:53:15.807: E/AndroidRuntime(742): java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) で 01-23 21:53:15.807: E/AndroidRuntime(742): ... 4 つ以上 01-23 21:53:15.807: E/AndroidRuntime(742): 原因: java.net.SocketTimeoutException: 接続タイムアウト 01-23 21:53:15.807: E/AndroidRuntime(742): org.apache.harmony.luni.platform.OSNetworkSystem.connect(ネイティブメソッド) 01-23 21:53:15.807: E/AndroidRuntime(742): dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357) で 01-23 21:53:15.807: E/AndroidRuntime(742): org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204) で 01-23 21:53:15.807: E/AndroidRuntime(742): org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437) で 01-23 21:53:15.807: E/AndroidRuntime(742): java.net.Socket.connect(Socket.java:983) で 01-23 21:53:15.807: E/AndroidRuntime (742): redis.clients.jedis.Connection.connect (Connection.java:129) で 01-23 21:53:15.807: E/AndroidRuntime(742): ... 13 詳細 01-23 21:53:17.737: E/WindowManager(742): アクティビティ android.jedisconnectiontest.com.MainActivity が、最初にここに追加されたウィンドウ com.android.internal.policy.impl.PhoneWindow$DecorView@40523ac8 をリークしました 01-23 21:53:17.737: E/WindowManager(742): android.view.WindowLeaked: アクティビティ android.jedisconnectiontest.com.MainActivity がウィンドウ com.android.internal.policy.impl.PhoneWindow$DecorView@40523ac8 をリークしました。最初にここに追加されました 01-23 21:53:17.737: E/WindowManager(742): android.view.ViewRoot.(ViewRoot.java:258) で 01-23 21:53:17.737: E/WindowManager(742): android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) で 01-23 21:53:17.737: E/WindowManager(742): android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) で 01-23 21:53:17.737: E/WindowManager(742): android.view.Window$LocalWindowManager.addView(Window.java:424) で 01-23 21:53:17.737: E/WindowManager(742): android.app.Dialog.show(Dialog.java:241) で 01-23 21:53:17.737: E/WindowManager(742): android.app.ProgressDialog.show(ProgressDialog.java:107) で 01-23 21:53:17.737: E/WindowManager(742): android.app.ProgressDialog.show(ProgressDialog.java:95) で 01-23 21:53:17.737: E/WindowManager(742): android.jedisconnectiontest.com.MainActivity.onCreate(MainActivity.java:56) で 01-23 21:53:17.737: E/WindowManager(742): android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) で 01-23 21:53:17.737: E/WindowManager(742): android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1611) で 01-23 21:53:17.737: E/WindowManager(742): android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1663) で 01-23 21:53:17.737: E/WindowManager(742): android.app.ActivityThread.access$1500 で (ActivityThread.java:117) 01-23 21:53:17.737: E/WindowManager(742): android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) で 01-23 21:53:17.737: E/WindowManager(742): android.os.Handler.dispatchMessage(Handler.java:99) で 01-23 21:53:17.737: E/WindowManager(742): android.os.Looper.loop(Looper.java:123) 01-23 21:53:17.737: E/WindowManager(742): android.app.ActivityThread.main (ActivityThread.java:3683) で 01-23 21:53:17.737: E/WindowManager(742): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で 01-23 21:53:17.737: E/WindowManager(742): java.lang.reflect.Method.invoke(Method.java:507) で 01-23 21:53:17.737: E/WindowManager(742): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) で 01-23 21:53:17.737: E/WindowManager(742): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) で 01-23 21:53:17.737: E/WindowManager(742): dalvik.system.NativeStart.main (ネイティブ メソッド) で