gpt4 book ai didi

android - 如何删除未使用的 GcmTaskService 服务?

转载 作者:行者123 更新时间:2023-11-29 23:51:23 24 4
gpt4 key购买 nike

我有这段代码 GcmTaskService 服务代码,检查互联网是否可以在线推送一些数据:

public class NetworkChangeService extends GcmTaskService {

public static String TAG = "NetworkChangeService";
private static long ONE_HOUR_IN_SECONDS = 3600L;
private static long ONE_MINUTE_IN_SECONDS = 60L;

private Synchronizer synchronizer;

public NetworkChangeService() {

}

@Override
public int onRunTask(TaskParams taskParams) {

// do my task here like syncing stuff
Log.d(TAG, "NetworkChangeService says that Network is Connected...");

saveData(getApplicationContext());

// TODO : Reschedule task in after certain condition (if failure) not to create duplicates
//scheduleTask(NetworkChangeService.this);

return GcmNetworkManager.RESULT_SUCCESS;
}

/**
* Schedule a Task that will be executed on Network Connected to Upload offline Members and Ventes
* @param context Context of the Activity or Application
*/
public void scheduleTask(Context context) {

OneoffTask task = new OneoffTask.Builder()
.setService(NetworkChangeService.class)
.setTag(TAG)
.setExecutionWindow(1L, ONE_MINUTE_IN_SECONDS)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
.setPersisted(true)
.setUpdateCurrent(true)
.build();

GcmNetworkManager.getInstance(context).schedule(task);
}

@Override
public void onInitializeTasks() {
super.onInitializeTasks();
// Re-schedule periodic task on app upgrade.
scheduleTask(this);
}

public void saveData(Context context) {
// OFFLINE MODE & ONLINE MODE
// Check if there is connection to save data offline
// Check if forceOffline is true then save Offline
int connectionType = NetworkUtil.getConnectivityStatus(context);

// 0 : No Connection, 1 : Mobile, 2 Wifi
if(connectionType > 0) {

if(synchronizer == null)
synchronizer = new Synchronizer();

// Save offline unsaved Members and Ventes
synchronizer.saveMembersOnline();
synchronizer.saveVentesOnline();
}
}
}

现在我不再在应用程序中使用它了。当我删除该类时,该服务仍在后台运行,因此有时应用程序会崩溃并提示

java.lang.RuntimeException: Unable to instantiate service com.ezcoding.sxc.utils.NetworkChangeService

如何完全删除该服务?

最佳答案

尝试取消与该服务相关的所有任务,看看会发生什么:

GcmNetworkManager.getInstance(this)
.cancelAllTasks(NetworkChangeService.class)

另一方面,OneoffTask 不支持在重启后保留。

关于android - 如何删除未使用的 GcmTaskService 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com