如何让Intentservice重复工作?

时间:2013-03-30 10:42:29

标签: android

我有一个intentservice,当myDataBsae中找到值时通知但是如果data为null则不应该通知我,所以

  1. 如何让我的Intentservice每隔50秒检查一次myDataBase的内容(我使用了AlarmManager,但我的服务每50秒通知我一次,尽管我的数据库= null)?
  2. 当我触发它时,我希望我的意图服务单独工作
  3. 我的服务是:

        public class ShowTimeServer extends IntentService  {
    NotificationManager nm;
    static final int uniqueID=326534;
    public ShowTimeServer() {
        super("ShowTimeServer");
        // TODO Auto-generated constructor stub
    }
    
    /* (non-Javadoc)
     * @see android.app.IntentService#onHandleIntent(android.content.Intent)
     */
    @Override
    protected void onHandleIntent(Intent arg0) {
        // TODO Auto-generated method stub
    
        ShowTimeDB RetrieverDB =new ShowTimeDB(this);
        RetrieverDB.open();
        String data = RetrieverDB.getShowNotify();
        RetrieverDB.close();
    
    
    
        if (!(data.equals(null))){
    
            nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    
            Intent intent=new Intent(this,TodayShow.class);
            PendingIntent pi= PendingIntent.getActivity(this, 0, intent, 0  );
            CharSequence x=(CharSequence) data;
            Notification n=new Notification(R.drawable.ic_launcher,"YOU HAVE SHOW" ,System.currentTimeMillis());
            n.setLatestEventInfo(this, "ShowTime", x, pi);
            n.defaults=Notification.DEFAULT_ALL;
    
            nm.notify(uniqueID,n);
            //pi.cancel();
            //nm.cancel(uniqueID);
    
        }
    }
    
    }
    

1 个答案:

答案 0 :(得分:0)

  1. intentService不应该每隔X秒执行一次。为此,还有很多其他解决方案。如果您坚持使用服务执行此任务,您可以将其设置为正常的前台/后台服务(取决于您是否希望在用户离开应用程序时执行此操作)然后在那里进行。

  2. intentService已经在不同的线程上运行。这就是你可以对onHandleIntent方法进行长时间操作的原因。