Take the 2-minute tour ×
Android Enthusiasts Stack Exchange is a question and answer site for enthusiasts and power users of the Android operating system. It's 100% free, no registration required.

Every once in a while my phone gets very sluggish when I'm multitasking, which is annoying but fine. Is there any way for me to set it so that the Dialer app takes priority over everything else, quickly stealing whatever resources it needs to run as fast as possible?

Also, I am aware of the plethora of task killers available but I'm not interested unless it specifically allows me to set the dialer as a VIP or in some way make sure that the dialer gets first dibs on resources.

Unrooted Moto Droid on 2.2

share|improve this question
4  
Never use a task killer on anything newer then 2.1. It interferes with the Kernel and usually causes more harm then good. –  Webs Sep 27 '10 at 21:55

3 Answers 3

up vote 4 down vote accepted

I don't think there is any way to prioritize threads/apps in Android. Programatically you'd set thread priority here, but it would be your threads in your app. You shouldn't be able to do this against someone else's app unless you had their developer signature as all applications are sandboxed from each other (unless permission is given).

Instead, I would focus on trying to improve overall performance on your phone:

  • Conserve memory:
    • Reduce the number of running services
    • Delete apps that you do not use (especially those that are spawning services)
  • Overclocking (requires root and will drain more battery, but could be allieviated some by running an under voltage kernel) or installing a custom mod with performance tweaks
    • As a side note, overclocking the Motorola Droid makes it hell of a lot more responsive than the default 550-600mhz clock speed, but I find the battery drain to be too much unless I have my phone plugged in to a power source. If you carry a spare battery around like me, it may not be that big of a deal

You are right to not use a task killer. The Android OS was built to handle tasks appropriately and you would otherwise waste resources running an auto-kill service every X minutes (because those killed tasks are just going to re-spawn) and potentially cause other problems (killing a task that is writing to the SD card, for instance, could cause file corruption). The only thing task killers are good for are for what you would normally use one for: to kill hung up processes.

share|improve this answer
    
Yeah, my overall performance isn't but every once in a while (usually at the most in opportune time) it gets hung up and I can't make a phone call. It's usually when I'm driving at work and listening to a podcast. The phone is plugged in and the temp usually rises (which I believe impacts the performance) then it gets slow and sometimes hard to make calls quickly. I may just add a line to my account and get an old school flip phone to make calls with at work. –  Matt Sep 27 '10 at 21:49
    
Agree with Bryan here. One small note, I still wouldn't recommend a task killer for killing hung processes. I would use a process monitor app like OS Monitor to view processes and kill something that is hung. Just my personal preference to steer people away from task killers. –  Webs Sep 27 '10 at 21:58
    
@Matt, I would follow Bryan's advice and remove unused apps and try to clean up your phone and SD card. You would be surprised how big of a difference that can make. And would save you some money. –  Webs Sep 27 '10 at 22:01

The Linux command nice and renice (use terminal) might be what you're looking for. The renice program is used to set the CPU and IO scheduling priority of a running process; the higher the nice value (the nicer the program) the lower the scheduling priority, and programs with low nice value (IOW, "mean") have higher scheduling priority.

However, I'm not quite sure how nice values are used by Android framework. In here: http://code.google.com/p/openeclair/issues/detail?id=97 it is hinted that Home apps prevents itself from being killed by setting itself with a very low nice value; and unless Android kernel deviates from upstream linux kernel by way too much, the CPU and IO scheduler should use nice value to prioritize CPU and IO scheduling.

You might need to be rooted and have busybox.

share|improve this answer
    
Just a remark: Nice values are only used for CPU scheduling, not I/O. –  Flow Nov 6 '11 at 15:21
    
@Flow: The nice value is used to determine initial I/O priority. –  Lie Ryan Nov 18 '11 at 3:04
    
Could you backup your claim by an reference/quote? The nice value only determines the amount of timeslice a process gets in CPU scheduling when the CFS scheduler is active. The Linux kernel has an extra I/O scheduler which does AFAIK not include the nice value for its calculations. Normally an I/O scheduler will optimize for throughput, regardless of the nice value. There is also a binary for the linux kernel, which is called ionice. But this is not the same as the process's nice value. –  Flow Nov 18 '11 at 11:05
    
@Flow: from the man page of ionice linux.die.net/man/1/ionice: The [default] priority within the best effort class will be dynamically derived from the cpu nice level of the process: io_priority = (cpu_nice + 20) / 5. –  Lie Ryan Nov 18 '11 at 20:22
    
@Flow: once the program is up and running, ionice can be used to set the I/O priority so it's no longer related to the CPU nice value. However, initial I/O priority is, by default, derived from the initial CPU nice value. –  Lie Ryan Nov 18 '11 at 20:28

AutoKiller Memory Optimizer (root only) or Auto Memory Manage

It's not specific to the dialer but you can give the dialer a higher priority.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.