当前位置: 首页 > 知识库问答 >
问题:

Evernote的android-job绑定

阚砚文
2023-03-14

有人为Evernote的android-job https://github.com/evernote/android-job绑定了吗?

有趣的是,Xamarin文档在一个示例中提到了它:

https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/trolleeshooting-bindings/#problem_name_collisions_on_inner_classes_properties

我尝试按照https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/进行操作,但没有生成JobManager类

共有1个答案

燕嘉颖
2023-03-14

是什么?

Xamarin的Android-Job绑定允许您利用Evernote的Android-Job库来高效、健壮地在后台运行作业。库检查客户端设备上的Android版本,以确定执行预定后台工作的最佳方法。它将使用最适合操作系统的方法,如JobSchedulerGCMNetworkManagerAlarmManagerWorkManager

第1步:

<service android:name="com.evernote.android.job.v21.PlatformJobService" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/>
<service android:name="com.evernote.android.job.v14.PlatformAlarmService" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/>
<service android:name="com.evernote.android.job.v14.PlatformAlarmServiceExact" android:exported="false"/>
<receiver android:name="com.evernote.android.job.v14.PlatformAlarmReceiver" android:exported="false">
  <intent-filter>
    <!-- Keep the filter for legacy intents -->
    <action android:name="com.evernote.android.job.v14.RUN_JOB"/>
    <action android:name="net.vrallev.android.job.v14.RUN_JOB"/>
  </intent-filter>
</receiver>
<receiver android:name="com.evernote.android.job.JobBootReceiver" android:exported="false">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
    <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
    <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
    <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
  </intent-filter>
</receiver>
<service android:name="com.evernote.android.job.gcm.PlatformGcmService" android:enabled="false" android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
  <intent-filter>
    <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
  </intent-filter>
</service>
<service android:name="com.evernote.android.job.JobRescheduleService" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/>

此外,请确保您具有以下权限:

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

第4步:

确保您的项目中有以下引用(可以通过Nuget安装):

    null
using Com.Evernote.Android.Job;

namespace MyNamespace
{
    public class MyJob : Job
    {

        public const String TAG = "job_myjob_tag";

        protected override Result OnRunJob(Params parameters)
        {
            // run your job here   
            return Result.Success;
        }

        public static void ScheduleJob()
        {
            new JobRequest.Builder(MyJob.TAG)
                .SetRequiresDeviceIdle(false)
                .SetRequiredNetworkType(JobRequest.NetworkType.Connected)
                .SetPeriodic(900000, 300000)
                .SetUpdateCurrent(true)
                .Build()
                .Schedule();
        }

        private void CancelJob(int jobId)
        {
            JobManager.Instance().Cancel(jobId);
        }

    }
}

为作业/秒创建工厂方法:

using Com.Evernote.Android.Job;

namespace MyNamespace
{
    public class MyJobCreator : Java.Lang.Object, IJobCreator
    {
        public Job Create(string tag)
        {
            switch (tag)
            {
                case MyJob.TAG:
                    return new MyJob();
                default:
                    return null;
            }
        }

    }
}

第7步:

初始化JobManager单例,最好在GlobalApplication.onCreate方法中初始化。如果你不能,还有一个选择。

JobManager.Create(this).AddJobCreator(new MyJobCreator());

安排你的工作!您可以从启动活动oncreate方法或任何您喜欢的地方执行此操作。例如:

MyNamespace.MyJob.ScheduleJob();
  1. onrunjob(...)方法中完成的工作应该是同步的,否则在所有工作完成之前不会返回结果。
  2. 注意不要多次实例化同一个作业。在作业生成器上利用SetupdateCurrent,或者通过调用jobmanager.instance().getAllJobRequestsForFlag(myjob.tag).
  3. 检查作业是否已经存在
  • Dooks123提供了android-job Xamarin.Android绑定和Android Manifest配置说明。
  • android-job库归功于Evernote
 类似资料:
  • DEPRECATED This library is not maintained anymore and there will be no further releases except for very critical bug fixes. Use WorkManager instead of this library. Android-Job A utility library for A

  • Evernote SDK for iOS 是围绕着 Evernote 云 API (v1.21) 进行封装的 iOS 开发包,使用 OAuth 认证机制。 示例代码: EvernoteSession *session = [EvernoteSession sharedSession];[session authenticateWithViewController:self completionHa

  • Job

    Job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。 Job Spec格式 spec.template格式同Pod RestartPolicy仅支持Never或OnFailure 单个Pod时,默认Pod成功运行后Job即结束 .spec.completions标志Job结束需要成功运行的Pod个数,默认为1 .spec.parallelism标志并行运行的Pod

  • 如果我进入obj/release/generated/src,我可以找到IApplicationSelectionListener,所以它被创建了一些绑定,但实际上它并不工作。有人能给我指出正确的方向吗?我需要做些什么来纠正这样的错误? 谢谢

  • Job Monarch 是 Ganglia 监控系统的插件,提供了批量作业监控。支持 Torque, PBS, 和 SLURM, 对 LSF 和 SGE 的支持还处于体验阶段。

  • 蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现跨系统调度自动化。 Benefits 安全可靠的高危命令检测能力 作为底层面向服务器OS的原子操作平台,对用户操作指令是否合规、安全的