我正在制作APK,但我遇到了问题。
我的APK在完成后发送GET请求。
我有一个asynctask
类用于定期发送GET请求。
问题是当我再次启动应用程序时,我需要杀死上一次启动的后台进程。
我将uses-permission android:name="android.permission.RESTART_PACKAGES"
和uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"
放在manifest.xml中,并使用以下代码:
if (URLUtil.isValidUrl(URL_Pet_GET) && URLUtil.isValidUrl(URL_Host)){
//Get_Backgnd.cancel(true); not working
context.getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses(String.valueOf(process.processName));
//not working
//ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
//activityManager.restartPackage(packageName);
//not working
pet_get_backgrnd Get_Backgnd = new pet_get_backgrnd();
Get_Backgnd.execute(); //Send GET request that I need stop on next execution of apk
}
private class pet_get_backgrnd extends AsyncTask<Context, Object, Object>{
/*@Override
protected void onPreExecute() {
cancel(true);
}*/ //not working
@Override
protected Object doInBackground(Context... params) {
//send Get requests
}
}
如何在下次执行APK时取消Get_Backgnd
的执行?
答案 0 :(得分:0)
问题在于,当我再次启动应用程序时,需要杀死之前启动的后台进程。
除非您在清单中做了一些非常不寻常的事情,否则没有“前一次启动后台进程”。大多数Android应用程序只有一个进程,因此如果您的AsyncTask
正在执行某些操作,则会在当前进程中执行此操作。
如何在下次执行apk时取消Get_Backgnd的执行?
在cancel()
对象上调用AsyncTask
。如果它正在运行,则该对象存在,因此请在其上调用cancel()
。
当然,正确的答案也可能是将您的应用重写为“定期发送请求”,使用不涉及AsyncTask
的其他内容(例如AlarmManager
和{ {1}})。