【发布时间】:2013-07-01 18:52:49
【问题描述】:
一旦用户退出应用程序,我正在尝试删除数据库中的特定注册表。对于那个问题,我调用了一个 IntentService,它在应用程序 ID 被破坏时理论上运行。问题是,尽管此意图没有按预期工作并且注册表没有被删除。如果您可以提供帮助,这是代码。 意图服务:
public class FinIntentService extends IntentService{
String levelstring = "22";
int pid;
static String pids;
BroadcastReceiver batteryReceiver = null;
String url = "10.0.0.13";
private static String url_crear = "http://10.0.0.13/subida/create_candidato.php";
private static final String url_delete = "http://10.0.0.13/subida/delete_candidato.php";
JSONParser jsonParser = new JSONParser();
@SuppressLint("NewApi")
static String device_id = Build.SERIAL;
static String PDA = device_id.substring(device_id.length() - 6);
public FinIntentService() {
super("FinIntentService");
}
@Override
protected void onHandleIntent(Intent intent)
{
int success;
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", Titulacion.getPID()));
JSONObject json = jsonParser.makeHttpRequest(
url_delete, "POST", params);
Log.d("Delete Product", json.toString());
success = json.getInt("success");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
例如日志没有到达
主要活动:
public void onDestroy(){
super.onDestroy();
Intent msgIntent = new Intent(Titulacion.this, FinIntentService.class);
startService(msgIntent);
}
我之前尝试过使用 Asynctask,但是在 onDestroy 时无法获得想要的效果。然而,在某些情况下(30 个中有 1 个)synctask 完成了它的任务。
【问题讨论】:
-
只是猜测......也许应用程序在意图可以服务之前就被破坏了?
-
是的,我想是的,但是有解决办法吗?
-
为什么要做intentservice来删除ddbb中的注册表?为什么不直接删除呢?并且:为什么在启动应用程序时不删除它?
-
好吧,一种粗略的处理方法是在 onDestroy 中调用 Thread.sleep(X) 以让您的任务完成您的工作并阻止 onDestroy 持续 X 秒。或者调用 yourthread.join(X) 来等待你的线程结束。
标签: android intentservice