GTaskSyncService是一个用于处理Google任务同步操作的Android服务类。它提供了启动同步、取消同步等功能,并通过广播机制通知同步状态和进度。

1.主要功能:
。同步管理:通过 GTaskASyncTask 执行异步同步任务,支持启动和取消操作。
。状态通知:通过广播机制向应用发送同步状态(是否正在同步)和进度消息。
。内存管理:在系统内存不足时,会自动取消正在进行的同步任务。
。静态接口:提供静态方法让Activity或Context可以方便地启动或取消同步,以及查询   同步状态。
2.核心组件
。mSyncTask:执行异步同步任务的对象。
。mSyncProgress:存储当前同步进度消息的字符串。
。广播机制:通过预定义的广播名称和键名发送同步状态和进度信息。
3.使用方式
。其他组件可以通过调用startSync(Activity)或cancelSync(Context)方法来控制同步过程,并通过监听广播获取同步状态更新。
main
1148980035@qq.com 9 months ago
parent 175e3a1555
commit c7b4da0b44

@ -23,54 +23,97 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
/**
* GTaskSyncService Google
* 广
*/
public class GTaskSyncService extends Service {
// 用于在 Intent 中传递同步操作类型的键名
public final static String ACTION_STRING_NAME = "sync_action_type";
// 表示启动同步操作的常量
public final static int ACTION_START_SYNC = 0;
// 表示取消同步操作的常量
public final static int ACTION_CANCEL_SYNC = 1;
// 表示无效操作的常量
public final static int ACTION_INVALID = 2;
// 同步服务广播的名称,用于发送同步状态和进度信息
public final static String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service";
// 广播中用于表示是否正在同步的键名
public final static String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing";
// 广播中用于传递同步进度消息的键名
public final static String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg";
// 用于执行异步同步任务的对象
private static GTaskASyncTask mSyncTask = null;
// 存储同步进度消息的字符串
private static String mSyncProgress = "";
/**
*
*
*/
private void startSync() {
if (mSyncTask == null) {
// 创建一个新的异步同步任务,并传入一个完成监听器
mSyncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() {
/**
*
* 广
*/
public void onComplete() {
mSyncTask = null;
sendBroadcast("");
stopSelf();
}
});
// 发送广播通知同步开始
sendBroadcast("");
// 执行异步同步任务
mSyncTask.execute();
}
}
/**
*
*
*/
private void cancelSync() {
if (mSyncTask != null) {
mSyncTask.cancelSync();
}
}
/**
*
* null
*/
@Override
public void onCreate() {
mSyncTask = null;
}
/**
*
* Intent
*
* @param intent Intent
* @param flags
* @param startId ID
* @return
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 获取 Intent 中的额外数据
Bundle bundle = intent.getExtras();
if (bundle != null && bundle.containsKey(ACTION_STRING_NAME)) {
// 根据同步操作类型执行相应的操作
switch (bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID)) {
case ACTION_START_SYNC:
startSync();
@ -86,6 +129,10 @@ public class GTaskSyncService extends Service {
return super.onStartCommand(intent, flags, startId);
}
/**
*
*
*/
@Override
public void onLowMemory() {
if (mSyncTask != null) {
@ -93,36 +140,79 @@ public class GTaskSyncService extends Service {
}
}
/**
*
* null
*
* @param intent Intent
* @return IBinder null
*/
public IBinder onBind(Intent intent) {
return null;
}
/**
* 广
*
* @param msg
*/
public void sendBroadcast(String msg) {
mSyncProgress = msg;
// 创建一个广播 Intent
Intent intent = new Intent(GTASK_SERVICE_BROADCAST_NAME);
// 添加是否正在同步的信息
intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, mSyncTask != null);
// 添加同步进度消息
intent.putExtra(GTASK_SERVICE_BROADCAST_PROGRESS_MSG, msg);
// 发送广播
sendBroadcast(intent);
}
/**
* Activity
*
* @param activity Activity
*/
public static void startSync(Activity activity) {
// 设置 GTaskManager 的 Activity 上下文
GTaskManager.getInstance().setActivityContext(activity);
// 创建一个启动服务的 Intent
Intent intent = new Intent(activity, GTaskSyncService.class);
// 添加启动同步操作的类型
intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_START_SYNC);
// 启动服务
activity.startService(intent);
}
/**
* Context
*
* @param context Context
*/
public static void cancelSync(Context context) {
// 创建一个启动服务的 Intent
Intent intent = new Intent(context, GTaskSyncService.class);
// 添加取消同步操作的类型
intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_CANCEL_SYNC);
// 启动服务
context.startService(intent);
}
/**
*
*
* @return true false
*/
public static boolean isSyncing() {
return mSyncTask != null;
}
/**
*
*
* @return
*/
public static String getProgressString() {
return mSyncProgress;
}
}
}
Loading…
Cancel
Save