Hi all, hope this is the right forum.
This thread is meant for ROM cooks only!
Let's start: I found a way to decrease the home button lag and would like to share this fix with you.
Some theory first:
The way from home button click to the home screen can be separated in two parts:
System will wait about 0.5s for another tap. This is due to the double click to voice-search feature, Samsung implemented. You won't find this lag on any other phone.
The good news is, that we can avoid it with some changes in framework.
The second part is the time the launcher needs to load. It's about 0.3 - 0.5 sec, depending on which app is currently running.
Now to the fix:
You have to decompile android.policy.jar (framework folder) using baksmali.
Open com\android\internal\policy\impl\PhoneWindowManager.smali and search for lines 3896 to 3922. They should look like this:
const/4 v4, 0x3
move/from16 v0, p4
move v1, v4
if-ne v0, v1, :cond_1
.line 1279
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomeKeyDoubleClickConcept:Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;
move-object v4, v0
move-object v0, v4
move/from16 v1, p2
move/from16 v2, p7
move v3, v13
invoke-virtual {v0, v1, v2, v3}, Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;->addAction(IIZ)V
.line 1288
:cond_1
Delete all of these lines.
Now go a few lines deeper to lines 3920 - 3922. They should be
invoke-virtual {v4, v5}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
.line 1294
Replace these two lines with:
invoke-virtual {v4, v5}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
[color="SeaGreen"] move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomePressed:Z
move v4, v0
[color="Red"] if-eqz v4, :cond_2[/color]
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->launchHomeFromHotKey()V[/color]
.line 1294
(Note that the first and last line are the original ones.)
Warning: take a look at line 3933. If it is not ":cond_2", you have to replace the cond_2 in "if-eqz v4, :cond_2" with the cond from line 3933.
It looks like the naming sceme depends on the baksmali version you're using.
Now recompile with smali and you're done 🙂
Some notes:
The device will no longer wait for double clicks of home key. This means, that the voice-search obviously can no longer be started with a double-tap on home key.
You will still notice some lag on home key. That's the time the home launcher needs to load. Try it from within the launcher (for example in the app chooser) and it will react instant. It should now be comparable to any other phone.
The given line-numbers are from a KH3 ROM. The numbers may change in future roms.
I would call this fix "experimental". I tested it for a few days without any issues, but I can't guarantee that it is bug free.
The problem is, that Samsung made the single click listener depend on the double click listener, so removing the double-click listener might cause some problems.
That's it. I hope, I could help you :cool: