首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java android GcmTaskService

Java android GcmTaskService
EN

Stack Overflow用户
提问于 2019-03-11 15:42:06
回答 2查看 207关注 0票数 0

我想做一个服务,这是工作的所有时间和期间的时间。我想做一项服务,即手机被锁定,睡眠,任务永远不会被杀死,我这样做了:

代码语言:javascript
复制
public static void scheduleRepeat(Context context) {
        try {
            Preferences prefs;
            prefs = new Preferences(context);
            long maxDiff = prefs.getInteger(Preferences.Key.CFG_USER_POSITION_FREQUENCY);

            PeriodicTask periodic = new PeriodicTask.Builder()
                    .setService(MyTaskService.class)
                    .setPeriod(maxDiff)
                    .setFlex(10)
                    .setTag(GCM_REPEAT_TAG)
                    .setPersisted(true)
                    .setUpdateCurrent(true)
                    .setRequiredNetwork(Task.NETWORK_STATE_ANY)
                    .setRequiresCharging(false)
                    .build();
            GcmNetworkManager.getInstance(context).schedule(periodic);
            Log.v(TAG, "repeating task scheduled");
        } catch (Exception e) {
            Log.e(TAG, "scheduling failed");
            e.printStackTrace();
        }
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        super.onTaskRemoved(rootIntent);

        GcmNetworkManager
                .getInstance(getApplicationContext())
                .cancelTask(GCM_REPEAT_TAG, MyTaskService.class);
    }

    @Override
    public void onInitializeTasks() {
        super.onInitializeTasks();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public int onRunTask(TaskParams taskParams) {    
        return GcmNetworkManager.RESULT_SUCCESS;
    }

但是我在某个地方看到Gcm被弃用了,这个服务会一直正常工作吗?

EN

回答 2

Stack Overflow用户

发布于 2019-03-11 15:50:14

它已被弃用,现在您可以使用Firebase Job Dispatcher

这个库使用Google Play服务内部的调度引擎(以前的GCM Network Manager组件)来提供一个向后兼容(回到Gingerbread)的类似JobScheduler的API.

票数 0
EN

Stack Overflow用户

发布于 2019-03-11 15:51:53

我不是舒尔,您正在尝试做什么,但乍一看,您似乎可以使用Timer类和TimerTask。但是,您也可以尝试使用Handler.postDelayed() (这将在主线程上执行)。

一般来说,许多谷歌API都被Firebase取代了,请访问their official site了解更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55097193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档