1

我有意图服务,当在 myDataBsae 中找到值时通知,但如果数据为 null 不应该通知我,所以

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

我的服务是:

    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);

    }
}

}
4

1 回答 1

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

  2. intentService already runs on a different thread. that's why you can do a long operation on the onHandleIntent method.

于 2013-03-30T11:41:18.437 回答