首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AlarmManager -我做得对吗?

AlarmManager -我做得对吗?
EN

Stack Overflow用户
提问于 2015-03-02 09:55:13
回答 2查看 59关注 0票数 0

我在我的AlarmManager类中设置了MainActivity

一个名为AlarmReceiver的类在每一组时间间隔上都会被激发。

当那个类被激发时,我必须执行一个操作。该代码位于另一个类Parsing.java中。

现在在AlarmReceiver.java,,我正在做这样的事情:

代码语言:javascript
复制
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        Parsing obj = new Parsing(context);

        obj.execute();

    }
}

我不能直接用AlarmReceiver.java编写代码,因为AlarmReceiver.java已经在扩展BroadcastReceiver,而我的代码(即Parsing.java )正在扩展另一个类。

因此,我正在为Parsing类创建一个对象,并调用该方法。

我的方法正确吗?

如果需要的话,我会提供进一步的资料。请告诉我我的方法是否正确?提前感谢!

编辑:

Parsing.java

代码语言:javascript
复制
public class Parsing extends AsyncTask<Void, Void, Void> {

//some code

}
EN

Stack Overflow用户

发布于 2015-03-02 10:36:13

我不知道你是怎么写你的Parsing.java的,它看起来不错,但请记住

此方法总是在其进程的主线程中调用,除非您使用registerReceiver显式要求将它调度在另一个线程上。当它在主线程上运行时,您不应该在其中执行长时间运行的操作(在考虑接收方被阻塞和候选人被杀死之前,系统允许的超时时间为10秒)。不能在onReceive()的实现中启动弹出对话框

对我来说,我认为更好的处理方法是在onReceive方法中调用另一个服务,如下所示

代码语言:javascript
复制
@Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, ParsingService.class);
        context.startService(i);
    }
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28806834

复制
相关文章

相似问题

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