我在scheduleAtFixedRate
中使用Service
来每2秒获取前台运行的应用
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run()
{
chatHead.post(new Runnable() {
public void run() {
List<ActivityManager.RunningTaskInfo> procInfos = activityManager.getRunningTasks(1);
if (procInfos.get(0).topActivity.getPackageName().equals("com.xyz")) {
chatHead.setVisibility(ImageButton.VISIBLE);
} else {
chatHead.setVisibility(ImageButton.GONE);
}
}
});
}
}, 2000, 3000);
这占用了太多CPU,我收到了 clear master app 的警告。我也不想在这里使用计时器...有什么方法可以通过BroadcastReiver
或任何简单的方式运行应用程序吗?
答案 0 :(得分:0)
我想在计算器上放一个浮动图标..每当计算器是我的顶级应用程序时......我的浮动图标应该是可见的
然后让您的热门应用程序通知您的浮动计算器(即通过发送Intent),以便它知道显示。
答案 1 :(得分:0)
改为使用警报概念
void setalarm()
{
AlarmManager am = (AlarmManager) getApplicationContext()
.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(getApplicationContext(), ServiceSync.class);
i.putExtra("ping", true);
PendingIntent pI = PendingIntent.getService(this, 666, i,
PendingIntent.FLAG_UPDATE_CURRENT);
try {
am.cancel(pI);
} catch (Exception e) {
}
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 2000,
pI);
}