[英]Loading data in background in android
I'm trying to do certain operations like creating a table and inserting 720 rows at initial launch of the application which takes some time, so I decided to run it in background. 我正在尝试执行某些操作,例如创建表并在应用程序的首次启动时插入720行,这需要一些时间,因此我决定在后台运行它。 Please see the code below,
请查看下面的代码,
MainActivity.java 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();
}
}
}
When I run this it show the following error in logcat, 当我运行它时,它在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()
Please help ! 请帮忙 !
FYI: Entire Logcat 仅供参考:整个Logcat
01-23 21:53:15.807: E/AndroidRuntime(742): at android.os.AsyncTask$3.done(AsyncTask.java:200) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.lang.Thread.run(Thread.java:1019) 01-23 21:53:15.807: E/AndroidRuntime(742): Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Connection timed out 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.Connection.connect(Connection.java:134) 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:69) 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.Connection.sendCommand(Connection.java:79) 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.BinaryClient.hget(BinaryClient.java:212) 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.Client.hget(Client.java:138) 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.Jedis.hget(Jedis.java:680) 01-23 21:53:15.807: E/AndroidRuntime(742): at android.jedisconnectiontest.com.MainActivity$DownloadTask.doInBackground(MainActivity.java:118) 01-23 21:53:15.807: E/AndroidRuntime(742): at android.jedisconnectiontest.com.MainActivity$DownloadTask.doInBackground(MainActivity.java:1) 01-23 21:53:15.807: E/AndroidRuntime(742): at android.os.AsyncTask$2.call(AsyncTask.java:185) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 01-23 21:53:15.807: E/AndroidRuntime(742): ... 4 more 01-23 21:53:15.807: E/AndroidRuntime(742): Caused by: java.net.SocketTimeoutException: Connection timed out 01-23 21:53:15.807: E/AndroidRuntime(742): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method) 01-23 21:53:15.807: E/AndroidRuntime(742): at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357) 01-23 21:53:15.807: E/AndroidRuntime(742): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204) 01-23 21:53:15.807: E/AndroidRuntime(742): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437) 01-23 21:53:15.807: E/AndroidRuntime(742): at java.net.Socket.connect(Socket.java:983) 01-23 21:53:15.807: E/AndroidRuntime(742): at redis.clients.jedis.Connection.connect(Connection.java:129) 01-23 21:53:15.807: E/AndroidRuntime(742): ... 13 more 01-23 21:53:17.737: E/WindowManager(742): Activity android.jedisconnectiontest.com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40523ac8 that was originally added here 01-23 21:53:17.737: E/WindowManager(742): android.view.WindowLeaked: Activity android.jedisconnectiontest.com.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40523ac8 that was originally added here 01-23 21:53:17.737: E/WindowManager(742): at android.view.ViewRoot.(ViewRoot.java:258) 01-23 21:53:17.737: E/WindowManager(742): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 01-23 21:53:17.737: E/WindowManager(742): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 01-23 21:53:17.737: E/WindowManager(742): at android.view.Window$LocalWindowManager.addView(Window.java:424) 01-23 21:53:17.737: E/WindowManager(742): at android.app.Dialog.show(Dialog.java:241) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ProgressDialog.show(ProgressDialog.java:107) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ProgressDialog.show(ProgressDialog.java:95) 01-23 21:53:17.737: E/WindowManager(742): at android.jedisconnectiontest.com.MainActivity.onCreate(MainActivity.java:56) 01-23 21:53:17.737: E/WindowManager(742): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 01-23 21:53:17.737: E/WindowManager(742): at android.os.Handler.dispatchMessage(Handler.java:99) 01-23 21:53:17.737: E/WindowManager(742): at android.os.Looper.loop(Looper.java:123) 01-23 21:53:17.737: E/WindowManager(742): at android.app.ActivityThread.main(ActivityThread.java:3683) 01-23 21:53:17.737: E/WindowManager(742): at java.lang.reflect.Method.invokeNative(Native Method) 01-23 21:53:17.737: E/WindowManager(742): at java.lang.reflect.Method.invoke(Method.java:507) 01-23 21:53:17.737: E/WindowManager(742): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-23 21:53:17.737: E/WindowManager(742): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-23 21:53:17.737: E/WindowManager(742): at dalvik.system.NativeStart.main(Native Method)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Connection timed out
Caused by: java.net.SocketTimeoutException: Connection timed out
This error means that the server did not answer between the given TimeOut value (normal about 10 seconds), is your server down? 此错误意味着服务器在给定的TimeOut值(正常情况下大约10秒)之间没有应答,服务器是否关闭? Or did you misspelled the server url?
还是您拼错了服务器网址?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.