当前位置: 首页 > 面试题库 >

由于线程频繁更新,因此每隔X秒就可以在线程的帮助下启动服务

施学
2023-03-14
问题内容

我的应用程序连接到 SQL SERVER 数据库,该数据库 每天更新一次
,因此当我开始活动时,将弹出登录表单并登录用户。现在,当我的数据库每秒更新一次时,我想 每隔X秒 运行 一次查询,
以便通知数据库中的任何更改并将通知发送给用户 。因此,我认为线程将发挥作用,以便查询每秒运行一次。现在,我想知道 如何在其中实现Thread
并运行 Service进行通知, 以便每当数据库用户中的数据更新时,都会通过推送通知来通知用户。


问题答案:

您可以将IntentService和Timer一起使用,如下所示:

public class MyBackgroundService extends IntentService
{
private Timer mBackGroundTimer;
public MyBackgroundService()
    {
        super("myservice");
        this.mBackGroundTimer=new Timer();
    }
@Override
protected void onHandleIntent(Intent intent) 
    {
        // TODO Auto-generated method stub
        mBackGroundTimer.schedule(new TimerTask() 
            { 
                public void run() 
                    {

                        try 
                            {
                                //your db query here
                            } 
                        catch (Exception e) 
                            {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                    } 
            },startTime,repeatTime); 
    } // END onHandleIntent()
private void mStopTimer()
    {
        //Call this whenever you need to stop the service
        mBackGroundTimer.cancel();
    }
}

并在您的活动中调用此方法,如下所示:

Intent mInt_BckGrndSrv =  new  Intent(getApplicationContext(),MyBackgroundService.class);
        startService(mInt_BckGrndSrv);

并且不要忘记将其指定为manifest.xml中的一项服务,因为,

<service android:name="com.example.MyBackgroundService" android:enabled="true"></service>

PS有关不同服务的教程,请检查此。



 类似资料:
  • 问题内容: 以给定的速率安排一段Java代码的最简单方法是什么? 问题答案: 在Java 5+中,带有: 上面的方法是有利的。在Java 5之前,您使用和:

  • 问题内容: 我有一个简单的Java程序,该程序读取一个文本文件,将其分隔为“”(空格),显示第一个单词,等待2秒,显示下一个…等等…我想在Spring或其他一些GUI。 关于如何使用spring轻松更新单词的任何建议?遍历我的列表并以某种方式使用setText(); 我没有运气。我正在使用此方法在consol中打印我的单词,并向其中添加JFrame …在consol中效果很好,但是却发出了无尽的j

  • 问题内容: 有人告诉我,您不应该从在Tomcat(或其他任何容器)下运行的Web应用程序启动自己的线程。 或类似地: 您应该从Tomcat知道的某个线程池中请求一个线程,而不是上述任何一个。这有什么道理吗,还是完全是poppycock? 问题答案: 可以随意启动自己的线程,但是请记住在应用程序停止时将其停止。Tomcat有自己的thead池,用于处理传入的请求。我认为使用它不是一个好主意,即使您设

  • 问题内容: 当请求到达处理文件上传的servlet时,在该servlet中启动一个新线程是一个好主意,该线程将处理与上传的文件一起提供的另一段数据。我想以此同时处理这两项工作。 问题答案: 这不仅是一个坏主意,而且也行不通。原因如下:您的文件上传请求最终将命中方法。只要您使用此方法,容器就会保持连接打开。从该方法返回后(如果您决定在一个单独的线程中处理传入数据,则将提早完成),容器将假定您已完成请

  • 问题内容: 如果我在Thread对象上使用start()并且run()方法返回,是否可以再次调用start()? 例如, 我只是想知道是因为我的代码抛出了IllegalThreadStateExceptions,所以想知道是否是因为您不能执行上述操作。 问题答案: 不,你不能。该方法的Javadoc 告诉您!

  • 要查看在线文件,在MATLAB菜单栏中选择Help选项。(更多关于使用在线文件的信息见帮助浏览器.) 在“用MATLAB”下,文件主要由以下主题构成: 开发环境- 提供关于MATLAB桌面的全部信息。 数学- 描述如何使用MATLAB的数学和统计功能。 编程和数据类型- 描述如何用MATLAB语言创建脚本和函数。 作图- 描述怎样用MATLAB的图形功能绘制数据图。 3D可视化- 介绍怎样用查看,