android sdk 配置文件,如何理解Android SDK配置文件traceview ...?

虽然我手边没有参考资料,但我认为可以安全地假设Android在优先级为android.os.Process.THREAD_PRIORITY_BACKGROUND的线程中执行AsyncTask.doInBackground()

这意味着这个线程是在Linux cgroup(调度类)的上下文中调度的 - 总是或在频繁的情况下,我不确定并且已经阅读了各种声明 - 常见CPU时间的上限5%或10% - 再次,不同来源提出不同的主张 - 适用。

换句话说,所有后台线程必须共享可用CPU时间的5%或10%。再一次,我已经读过声称如果前台和实时任务空闲,这是动态调整的,但我很乐意自己指出一个可信的来源。此外,我不会指望它,因为用户可以在使用我的应用程序时收听实时音频流。

如果您调整后台线程的优先级,如下所示:

private static final int bgThreadPrio = Process.THREAD_PRIORITY_BACKGROUND +

Process.THREAD_PRIORITY_MORE_FAVORABLE;

protected YourReturnType doInBackground() {

Process.setThreadPriority(bgThreadPrio);

....

}

然后你实现了两件事。

您将线程移出后台cgroup,这样它就不必与其他后台线程共享10%的CPU时间(至少目前,直到Android在这方面更改其策略)。

您为线程分配优先级,这通常不会对用户界面和实时线程产生极其严重的影响,因为THREAD_PRIORITY_DEFAULT为0而THREAD_PRIORITY_BACKGROUND为10.因此您的线程将以优先级9运行,这比0差得多但它会避免后台任务的人为限制。

但是,您也可能更改底层AsyncTask执行程序为您的AsyncTask提供的Thread的优先级。此线程将被回收,它可以是单个线程或从池中选择。因此,在应用程序的所有AsyncTasks中的所有doInBackground()方法中设置优先级可能是个好主意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值