我将使用 Alarm Manager
来更新小部件,需要借助一个 Service
。我有两个不同的问题。
第一个问题:我正在使用 Alarm Manager 的 intent 调用服务,如下所示:
alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
context.startService(new Intent(context, MyService.class));
Long repeat = Long.parseLong(prefs.getString("update_preference", "600"));
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*repeat, pi);
这有问题吗?
看起来和使用都没问题。但是当我查看正在运行的服务时,却没有看到我的服务名称在列表中。也许它不是以单独的服务运行的。只看到应用程序名称(而不是作为服务运行)。我不确定如何分离或是否有影响?
另一个问题:长时间运行的应用程序控制小部件更新,会被手动关闭或任务管理器关闭。当然,Alarm Manager
会停止并且小部件的功能也会停止,比如按钮点击。
但是 Twitter 解决了这个问题。当小部件处于活动状态时,如果我关闭主应用程序(Twitter)- 控制小部件 - 然后点击小部件,一些方式能够触发小部件应用程序并且它能够正常启动。所以按钮正常工作。这怎么可能呢?
任何帮助都将不胜感激。
context.startService
,因为PendingIntent将启动服务。 - tyczjstartService
这一行就可以了。谢谢。 - Ogulcan Orhan