gpt4 book ai didi

java - Android 服务完全破坏了设备的性能?

转载 作者:行者123 更新时间:2023-11-29 21:04:30 25 4
gpt4 key购买 nike

我有一项服务需要检查某个应用程序是否在前台。当应用程序退出前台时,服务将运行一条命令。现在,我用计时器实现了这个:

public int onStartCommand(Intent intent, int startid) {
handler = new Handler();
handler.post(new Runnable() {
public void run() {
Toast toast = Toast.makeText(MyService.this, "Service has started.", Toast.LENGTH_LONG);
toast.show();
}
});

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {

public void run()
{
/* Get all Tasks available (with limit set). */
ActivityManager mgr = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> allTasks = mgr.getRunningTasks(showLimit);
/* Loop through all tasks returned. */
for (ActivityManager.RunningTaskInfo aTask : allTasks)
{
Log.i("MyApp", "Task: " + aTask.baseActivity.getClassName());

if (aTask.baseActivity.getClassName().equals("package")) {
running=true;
}
else {
RunAsRoot(commandsdefault);
}
}
}
}, 6000, 3000); // every 3 seconds, with a 6 second first execution delay


return START_STICKY;

}

太棒了,它按预期工作。但它占用了大量的 CPU 时间,而且所有应用程序的 UI,甚至是启动器,都是跳动的。有更好的方法吗?

最佳答案

可能是 mgr.getRunningTasks(showLimit);正在占用大量资源..您可以减少“showLimit”值并检查差异。

您也可以尝试调用 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/com/android/internal/app/IUsageStats.java如果您打算构建应用程序使用管理器之类的应用程序,请通过反射(reflection)...

关于java - Android 服务完全破坏了设备的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24996983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com