代码功能优化

develop
董春阳 1 year ago
parent b78b7b37e8
commit 8aefa300e7

@ -24,46 +24,43 @@ import net.micode.notes.tool.GTaskStringUtils;
import org.json.JSONException;
import org.json.JSONObject;
// MetaData类继承自Task类主要用于处理与任务相关的元数据操作例如设置、获取元数据以及和JSON数据进行交互等
/**
* MetaDataTask
* JSON
*/
public class MetaData extends Task {
// 定义一个私有静态常量TAG其值为类的简单名称用于在日志记录时标识当前类方便查看日志输出确定是该类产生的相关信息
private final static String TAG = MetaData.class.getSimpleName();
// 用于存储与元数据相关的Gid从代码上下文推测可能是和任务相关的某种唯一标识符初始值为null
private String mRelatedGid = null;
private static final String TAG = MetaData.class.getSimpleName();
private String relatedGid = null;
/**
* GidJSONObject
*
*
* @param gid Gid
* @param metaInfo JSON
* @param gid Gid
* @param metaInfo JSON
*/
public void setMeta(String gid, JSONObject metaInfo) {
try {
// 尝试将传入的gid值放入metaInfo这个JSON对象中对应的键是通过GTaskStringUtils.META_HEAD_GTASK_ID获取的
// 具体键值由这个工具类中的常量定义决定如果出现JSONException异常比如JSON对象的结构不符合要求等原因导致无法添加键值对则会记录错误日志
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
} catch (JSONException e) {
Log.e(TAG, "failed to put related gid");
Log.e(TAG, "Failed to put related gid", e);
}
// 将处理后的metaInfo对象转换为字符串并通过调用setNotes方法推测来自父类Task用于设置笔记相关内容此处把元数据信息当作笔记内容存储保存元数据信息
setNotes(metaInfo.toString());
// 调用setName方法推测来自父类Task相关实现将名称设置为GTaskStringUtils.META_NOTE_NAME所定义的值完成元数据相关设置操作
setName(GTaskStringUtils.META_NOTE_NAME);
}
/**
* Gid
* Gid
*
* @return mRelatedGidGid
* @return Gid
*/
public String getRelatedGid() {
return mRelatedGid;
return relatedGid;
}
/**
* TaskisWorthSaving
*
*
* @return nullnulltruefalse
* @return nulltruefalse
*/
@Override
public boolean isWorthSaving() {
@ -71,55 +68,58 @@ public class MetaData extends Task {
}
/**
* setContentByRemoteJSONJSON
* JSON
* Gid
*
* @param js JSONObjectJSON
* @param js JSONObject
*/
@Override
public void setContentByRemoteJSON(JSONObject js) {
// 首先调用父类的setContentByRemoteJSON方法让父类先进行一些通用的或者默认的基于远程JSON数据的内容设置操作
super.setContentByRemoteJSON(js);
if (getNotes()!= null) {
try {
// 如果通过getNotes方法获取的笔记内容不为null则尝试从这个笔记内容先去除两端空白字符后转换为JSONObject中获取对应的Gid值
JSONObject metaInfo = new JSONObject(getNotes().trim());
mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
relatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
} catch (JSONException e) {
// 如果在获取Gid值过程中出现JSONException异常比如解析JSON对象获取对应键的值失败等情况则记录一条警告级别的日志信息表明获取相关Gid失败并将mRelatedGid设置为null
Log.w(TAG, "failed to get related gid");
mRelatedGid = null;
Log.w(TAG, "Failed to get related gid", e);
relatedGid = null;
}
}
}
/**
* setContentByLocalJSONIllegalAccessError
*
* 使@Deprecated使
*
* @param js
* @param js
*/
@Override
@Deprecated
public void setContentByLocalJSON(JSONObject js) {
// this function should not be called
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
/**
* getLocalJSONFromContentIllegalAccessError
*
* 使@Deprecated使
*
* @return
* @return
*/
@Override
@Deprecated
public JSONObject getLocalJSONFromContent() {
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");
}
/**
* getSyncActionIllegalAccessError
*
* 使@Deprecated使
*
* @param c c
* @return
* @param c
* @return
*/
@Override
@Deprecated
public int getSyncAction(Cursor c) {
throw new IllegalAccessError("MetaData:getSyncAction should not be called");
}

@ -17,102 +17,159 @@
package net.micode.notes.gtask.data;
import android.database.Cursor;
import org.json.JSONObject;
// 定义一个抽象类Node作为其他节点类的基类用于处理与Google Tasks同步相关的数据操作
/**
* NodeGoogle Tasks
*
*
*/
public abstract class Node {
// 表示无同步操作
// 同步操作类型常量
public static final int SYNC_ACTION_NONE = 0;
// 表示在远程添加操作
public static final int SYNC_ACTION_ADD_REMOTE = 1;
// 表示在本地添加操作
public static final int SYNC_ACTION_ADD_LOCAL = 2;
// 表示在远程删除操作
public static final int SYNC_ACTION_DEL_REMOTE = 3;
// 表示在本地删除操作
public static final int SYNC_ACTION_DEL_LOCAL = 4;
// 表示在远程更新操作
public static final int SYNC_ACTION_UPDATE_REMOTE = 5;
// 表示在本地更新操作
public static final int SYNC_ACTION_UPDATE_LOCAL = 6;
// 表示更新冲突操作
public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;
// 表示同步错误操作
public static final int SYNC_ACTION_ERROR = 8;
// 存储Google Tasks的唯一标识符
private String mGid;
// 存储节点名称
private String mName;
// 存储最后修改时间
private long mLastModified;
// Google Tasks的唯一标识符
private String gid;
// 节点名称
private String name;
// 最后修改时间
private long lastModified;
// 表示该节点是否已被删除
private boolean mDeleted;
private boolean deleted;
// 构造函数,初始化成员变量
/**
*
*/
public Node() {
mGid = null;
mName = "";
mLastModified = 0;
mDeleted = false;
gid = null;
name = "";
lastModified = 0;
deleted = false;
}
// 获取创建操作的JSON对象根据传入的操作ID确定具体的创建操作
/**
* JSONID
*
* @param actionId ID
* @return JSONObject
*/
public abstract JSONObject getCreateAction(int actionId);
// 获取更新操作的JSON对象根据传入的操作ID确定具体的更新操作
/**
* JSONID
*
* @param actionId ID
* @return JSONObject
*/
public abstract JSONObject getUpdateAction(int actionId);
// 根据从远程获取的JSON数据设置节点内容
/**
* JSON
*
* @param js JSONObject
*/
public abstract void setContentByRemoteJSON(JSONObject js);
// 根据本地生成的JSON数据设置节点内容
/**
* JSON
*
* @param js JSONObject
*/
public abstract void setContentByLocalJSON(JSONObject js);
// 从节点内容生成本地JSON对象
/**
* JSON
*
* @return JSONObject
*/
public abstract JSONObject getLocalJSONFromContent();
// 根据数据库游标获取同步操作类型
/**
*
*
* @param c
* @return
*/
public abstract int getSyncAction(Cursor c);
// 设置Google Tasks的唯一标识符
/**
* Google Tasks
*
* @param gid Google Tasks
*/
public void setGid(String gid) {
this.mGid = gid;
this.gid = gid;
}
// 设置节点名称
/**
*
*
* @param name
*/
public void setName(String name) {
this.mName = name;
this.name = name;
}
// 设置最后修改时间
/**
*
*
* @param lastModified
*/
public void setLastModified(long lastModified) {
this.mLastModified = lastModified;
this.lastModified = lastModified;
}
// 设置该节点是否已被删除
/**
*
*
* @param deleted
*/
public void setDeleted(boolean deleted) {
this.mDeleted = deleted;
this.deleted = deleted;
}
// 获取Google Tasks的唯一标识符
/**
* Google Tasks
*
* @return Google Tasks
*/
public String getGid() {
return this.mGid;
return gid;
}
// 获取节点名称
/**
*
*
* @return
*/
public String getName() {
return this.mName;
return name;
}
// 获取最后修改时间
/**
*
*
* @return
*/
public long getLastModified() {
return this.mLastModified;
return lastModified;
}
// 获取该节点是否已被删除
/**
*
*
* @return
*/
public boolean getDeleted() {
return this.mDeleted;
return deleted;
}
}

@ -18,33 +18,29 @@
package net.micode.notes.gtask.remote;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Build;
import android.util.Log;
import net.micode.notes.R;
import net.micode.notes.ui.NotesListActivity;
import net.micode.notes.ui.NotesPreferenceActivity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import net.micode.notes.NotesListActivity;
import net.micode.notes.NotesPreferenceActivity;
import net.micode.notes.gtask.GTaskManager;
// GTaskASyncTask类继承自AsyncTask用于在后台执行Google Tasks同步任务并通过通知和回调机制处理同步结果
public class GTaskASyncTask extends AsyncTask<Void, String, Integer> {
// 定义Google Tasks同步通知的唯一ID
private static int GTASK_SYNC_NOTIFICATION_ID = 5234235;
private static final int GTASK_SYNC_NOTIFICATION_ID = 5234235;
// 定义通知渠道ID
private static final String NOTIFICATION_CHANNEL_ID = "gtask_sync_channel";
// 定义通知渠道名称
private static final String NOTIFICATION_CHANNEL_NAME = "Google Tasks Sync";
// 定义一个接口,用于在同步任务完成时通知调用者
public interface OnCompleteListener {
@ -53,121 +49,110 @@ public class GTaskASyncTask extends AsyncTask<Void, String, Integer> {
}
// 上下文对象,用于获取系统服务和资源
private Context mContext;
private final Context context;
// 通知管理器,用于管理通知的显示和取消
private NotificationManager mNotifiManager;
private final NotificationManager notificationManager;
// Google Tasks管理器负责执行同步任务
private GTaskManager mTaskManager;
private final GTaskManager taskManager;
// 同步完成监听器,用于在同步任务完成时执行回调
private OnCompleteListener mOnCompleteListener;
private final OnCompleteListener onCompleteListener;
// 构造函数初始化GTaskASyncTask实例
public GTaskASyncTask(Context context, OnCompleteListener listener) {
// 保存上下文对象
mContext = context;
// 保存同步完成监听器
mOnCompleteListener = listener;
// 获取通知管理器服务
mNotifiManager = (NotificationManager) mContext
.getSystemService(Context.NOTIFICATION_SERVICE);
// 获取Google Tasks管理器实例
mTaskManager = GTaskManager.getInstance();
this.context = context;
this.onCompleteListener = listener;
this.notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
this.taskManager = GTaskManager.getInstance();
createNotificationChannel();
}
// 取消同步任务的方法调用GTaskManager的cancelSync方法
// 创建通知渠道的方法用于Android 8.0及以上系统
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
NOTIFICATION_CHANNEL_ID,
NOTIFICATION_CHANNEL_NAME,
NotificationManager.IMPORTANCE_DEFAULT
);
notificationManager.createNotificationChannel(channel);
}
}
// 取消同步任务的方法调用GTaskManager的cancelSync方法并等待任务真正取消
public void cancelSync() {
mTaskManager.cancelSync();
taskManager.cancelSync();
// 这里可以添加等待任务取消的逻辑,例如通过循环检查任务状态
}
// 发布同步进度消息的方法调用父类的publishProgress方法
public void publishProgess(String message) {
publishProgress(new String[]{message});
publishProgress(message);
}
// 显示通知的方法,根据不同的通知类型和内容创建并显示通知
private void showNotification(int tickerId, String content) {
// 创建一个通知对象,设置图标、滚动提示信息和时间戳
Notification notification = new Notification(R.drawable.notification, mContext
.getString(tickerId), System.currentTimeMillis());
// 设置通知的默认灯光效果
notification.defaults = Notification.DEFAULT_LIGHTS;
// 设置通知在被点击后自动取消
notification.flags = Notification.FLAG_AUTO_CANCEL;
PendingIntent pendingIntent;
// 根据通知类型决定点击通知后打开的Activity
if (tickerId!= R.string.ticker_success) {
// 如果不是同步成功的通知点击后打开NotesPreferenceActivity
pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,
NotesPreferenceActivity.class), 0);
} else {
// 如果是同步成功的通知点击后打开NotesListActivity
pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,
NotesListActivity.class), 0);
private void showNotification(int tickerId, String content, Class<?> targetActivityClass) {
Notification.Builder builder = new Notification.Builder(context, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.notification)
.setContentTitle(context.getString(R.string.app_name))
.setContentText(content)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_LIGHTS);
Intent intent = new Intent(context, targetActivityClass);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
builder.setContentIntent(pendingIntent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder.setChannelId(NOTIFICATION_CHANNEL_ID);
}
// 设置通知的详细信息包括标题、内容和点击后的PendingIntent
notification.setLatestEventInfo(mContext, mContext.getString(R.string.app_name), content,
pendingIntent);
// 显示通知
mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification);
notificationManager.notify(GTASK_SYNC_NOTIFICATION_ID, builder.build());
}
// 在后台线程执行同步任务的方法
@Override
protected Integer doInBackground(Void... unused) {
// 发布同步进度消息,提示正在登录同步账户
publishProgess(mContext.getString(R.string.sync_progress_login, NotesPreferenceActivity
.getSyncAccountName(mContext)));
// 调用GTaskManager的sync方法执行同步任务并返回同步结果
return mTaskManager.sync(mContext, this);
publishProgess(context.getString(R.string.sync_progress_login, NotesPreferenceActivity.getSyncAccountName(context)));
return taskManager.sync(context, this);
}
// 在主线程更新同步进度的方法,用于显示同步过程中的通知
@Override
protected void onProgressUpdate(String... progress) {
// 显示同步中的通知,提示当前同步进度
showNotification(R.string.ticker_syncing, progress[0]);
// 如果上下文是GTaskSyncService发送广播通知同步进度
if (mContext instanceof GTaskSyncService) {
((GTaskSyncService) mContext).sendBroadcast(progress[0]);
showNotification(R.string.ticker_syncing, progress[0], NotesPreferenceActivity.class);
if (context instanceof GTaskSyncService) {
((GTaskSyncService) context).sendBroadcast(progress[0]);
}
}
// 在同步任务完成后执行的方法,根据同步结果显示相应的通知,并执行回调
@Override
protected void onPostExecute(Integer result) {
// 如果同步成功
if (result == GTaskManager.STATE_SUCCESS) {
// 显示同步成功的通知,提示成功同步的账户信息
showNotification(R.string.ticker_success, mContext.getString(
R.string.success_sync_account, mTaskManager.getSyncAccount()));
// 更新最后同步时间
NotesPreferenceActivity.setLastSyncTime(mContext, System.currentTimeMillis());
switch (result) {
case GTaskManager.STATE_SUCCESS:
showNotification(R.string.ticker_success, context.getString(R.string.success_sync_account, taskManager.getSyncAccount()), NotesListActivity.class);
NotesPreferenceActivity.setLastSyncTime(context, System.currentTimeMillis());
Log.d("GTaskASyncTask", "Sync success");
break;
case GTaskManager.STATE_NETWORK_ERROR:
showNotification(R.string.ticker_fail, context.getString(R.string.error_sync_network), NotesPreferenceActivity.class);
Log.e("GTaskASyncTask", "Network error during sync");
break;
case GTaskManager.STATE_INTERNAL_ERROR:
showNotification(R.string.ticker_fail, context.getString(R.string.error_sync_internal), NotesPreferenceActivity.class);
Log.e("GTaskASyncTask", "Internal error during sync");
break;
case GTaskManager.STATE_SYNC_CANCELLED:
showNotification(R.string.ticker_cancel, context.getString(R.string.error_sync_cancelled), NotesPreferenceActivity.class);
Log.d("GTaskASyncTask", "Sync cancelled");
break;
default:
Log.w("GTaskASyncTask", "Unknown sync result: " + result);
break;
}
// 如果同步出现网络错误
else if (result == GTaskManager.STATE_NETWORK_ERROR) {
// 显示网络错误的通知
showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_network));
}
// 如果同步出现内部错误
else if (result == GTaskManager.STATE_INTERNAL_ERROR) {
// 显示内部错误的通知
showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_internal));
}
// 如果同步被取消
else if (result == GTaskManager.STATE_SYNC_CANCELLED) {
// 显示同步取消的通知
showNotification(R.string.ticker_cancel, mContext
.getString(R.string.error_sync_cancelled));
}
// 如果同步完成监听器不为空
if (mOnCompleteListener!= null) {
// 在新线程中执行监听器的onComplete方法
new Thread(new Runnable() {
@Override
public void run() {
mOnCompleteListener.onComplete();
}
}).start();
if (onCompleteListener!= null) {
new Thread(() -> onCompleteListener.onComplete()).start();
}
}
}
}

@ -6,155 +6,166 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
// GTaskSyncService类是一个服务用于管理Google Tasks的同步操作包括启动、取消同步并通过广播通知同步状态
/**
* GTaskSyncServiceGoogle Tasks
* 广
*/
public class GTaskSyncService extends Service {
// 用于在Intent中传递同步操作类型的字符串名称
public final static String ACTION_STRING_NAME = "sync_action_type";
public static final String ACTION_STRING_NAME = "sync_action_type";
// 表示启动同步操作的常量
public final static int ACTION_START_SYNC = 0;
public static final int ACTION_START_SYNC = 0;
// 表示取消同步操作的常量
public final static int ACTION_CANCEL_SYNC = 1;
public static final int ACTION_CANCEL_SYNC = 1;
// 表示无效操作的常量
public final static int ACTION_INVALID = 2;
public static final int ACTION_INVALID = 2;
// 用于发送广播的名称用于标识与Google Tasks同步服务相关的广播
public final static String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service";
public static final String GTASK_SERVICE_BROADCAST_NAME = "net.micode.notes.gtask.remote.gtask_sync_service";
// 在广播Intent中用于表示是否正在同步的Extra键
public final static String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing";
public static final String GTASK_SERVICE_BROADCAST_IS_SYNCING = "isSyncing";
// 在广播Intent中用于传递同步进度消息的Extra键
public final static String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg";
public static final String GTASK_SERVICE_BROADCAST_PROGRESS_MSG = "progressMsg";
// 静态变量,用于存储当前正在执行的同步任务
private static GTaskASyncTask mSyncTask = null;
private static GTaskASyncTask syncTask = null;
// 静态变量,用于存储同步进度消息
private static String mSyncProgress = "";
private static String syncProgress = "";
// 启动同步任务的方法
/**
*
* 广
*
*/
private void startSync() {
// 如果同步任务尚未创建
if (mSyncTask == null) {
// 创建一个新的GTaskASyncTask实例并传入当前服务上下文和同步完成监听器
mSyncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() {
// 同步完成时的回调方法
if (syncTask == null) {
syncTask = new GTaskASyncTask(this, new GTaskASyncTask.OnCompleteListener() {
@Override
public void onComplete() {
// 同步完成后将mSyncTask设为null
mSyncTask = null;
// 发送广播,通知同步完成
syncTask = null;
sendBroadcast("");
// 停止当前服务
stopSelf();
}
});
// 发送广播,通知同步开始
sendBroadcast("");
// 执行同步任务
mSyncTask.execute();
syncTask.execute();
} else {
Log.w("GTaskSyncService", "startSync called while a sync task is already running");
}
}
// 取消同步任务的方法
/**
*
*
*
*/
private void cancelSync() {
// 如果同步任务正在执行
if (mSyncTask!= null) {
// 调用同步任务的取消方法
mSyncTask.cancelSync();
if (syncTask!= null) {
syncTask.cancelSync();
}
}
// 服务创建时的回调方法
/**
*
* null
*/
@Override
public void onCreate() {
// 初始化时将同步任务设为null
mSyncTask = null;
syncTask = null;
}
// 服务启动命令的回调方法
/**
*
* Intent
* START_STICKY便
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 从Intent中获取附加的Bundle
Bundle bundle = intent.getExtras();
// 如果Bundle存在且包含同步操作类型的键
if (bundle!= null && bundle.containsKey(ACTION_STRING_NAME)) {
// 根据同步操作类型进行相应处理
switch (bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID)) {
int action = bundle.getInt(ACTION_STRING_NAME, ACTION_INVALID);
switch (action) {
case ACTION_START_SYNC:
// 启动同步任务
startSync();
break;
case ACTION_CANCEL_SYNC:
// 取消同步任务
cancelSync();
break;
default:
break;
}
// 返回START_STICKY以便在系统资源允许时重新启动服务
return START_STICKY;
}
// 如果Bundle不包含同步操作类型的键调用父类的onStartCommand方法
return super.onStartCommand(intent, flags, startId);
}
// 系统内存不足时的回调方法
/**
*
*
*/
@Override
public void onLowMemory() {
// 如果同步任务正在执行
if (mSyncTask!= null) {
// 取消同步任务
mSyncTask.cancelSync();
if (syncTask!= null) {
cancelSync();
}
}
// 绑定服务时的回调方法该服务不支持绑定返回null
/**
* null
*/
@Override
public IBinder onBind(Intent intent) {
return null;
}
// 发送广播的方法,用于通知同步状态和进度
/**
* 广
* IntentExtra广
*/
public void sendBroadcast(String msg) {
// 更新同步进度消息
mSyncProgress = msg;
// 创建一个新的Intent用于发送广播
syncProgress = msg;
Intent intent = new Intent(GTASK_SERVICE_BROADCAST_NAME);
// 在Intent中添加是否正在同步的Extra
intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, mSyncTask!= null);
// 在Intent中添加同步进度消息的Extra
intent.putExtra(GTASK_SERVICE_BROADCAST_IS_SYNCING, syncTask!= null);
intent.putExtra(GTASK_SERVICE_BROADCAST_PROGRESS_MSG, msg);
// 发送广播
sendBroadcast(intent);
}
// 外部调用启动同步服务的静态方法
/**
*
* GTaskManagerIntent
*/
public static void startSync(Activity activity) {
// 设置GTaskManager的活动上下文
GTaskManager.getInstance().setActivityContext(activity);
// 创建一个启动服务的Intent
Intent intent = new Intent(activity, GTaskSyncService.class);
// 在Intent中添加启动同步操作的类型
intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_START_SYNC);
// 启动服务
intent.putExtra(ACTION_STRING_NAME, ACTION_START_SYNC);
activity.startService(intent);
}
// 外部调用取消同步服务的静态方法
/**
*
* Intent
*/
public static void cancelSync(Context context) {
// 创建一个启动服务的Intent
Intent intent = new Intent(context, GTaskSyncService.class);
// 在Intent中添加取消同步操作的类型
intent.putExtra(GTaskSyncService.ACTION_STRING_NAME, GTaskSyncService.ACTION_CANCEL_SYNC);
// 启动服务
intent.putExtra(ACTION_STRING_NAME, ACTION_CANCEL_SYNC);
context.startService(intent);
}
// 判断同步是否正在进行的静态方法
/**
*
* null
*/
public static boolean isSyncing() {
// 如果同步任务不为null说明同步正在进行
return mSyncTask!= null;
return syncTask!= null;
}
// 获取同步进度字符串的静态方法
/**
*
*
*/
public static String getProgressString() {
// 返回同步进度消息
return mSyncProgress;
return syncProgress;
}
}
Loading…
Cancel
Save