0

我正在创建一个 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
    }
}

如何Get_Backgnd在下次执行 APK 时取消执行?

4

1 回答 1

0

问题是当我再次启动应用程序时需要杀死后台先前启动的进程。

没有“先前启动的后台进程”,除非您在清单中做了一些非常不寻常的事情。大多数 Android 应用程序只有一个进程,所以如果你AsyncTask正在做某事,它就是在你当前的进程中做的。

如何在下一次 apk 执行时取消 Get_Backgnd 的执行?

调用对象cancel()AsyncTask如果它正在运行,则该对象存在,因此调用cancel()它。

当然,也有可能正确的答案是使用不涉及AsyncTask(例如,AlarmManagerIntentService)的其他东西重写您的应用程序以“定期发送 Get 请求”。

于 2013-05-24T00:57:49.950 回答