new-instance v1, Lagp; # ☻new 一个 agp 对象 ☻ invoke-direct {v1, p0}, Lagp;-><init>(Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;) V invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preferen ce/Preference$OnPreferenceClickListener;)V #设置监听器 :cond_4 invoke-virtual {p0}, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->getPreference Screen()Landroid/preference/PreferenceScreen; move-result-object v0 const-string v1, "user_custom_private_pic" invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->findPreference(Ljava/lang/CharSequence;) Landroid/preference/Preference; move-result-object v0 #查找用户自定义“隐私空间”图标 List 的 Preference iput-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->c:Landroid/pr eference/Preference; #赋值给成员变量 c iget-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->c:Landroid/pr eference/Preference; if-eqz v0, :cond_5 iget-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->c:Landroid/pr eference/Preference; invoke-virtual {v0}, Landroid/preference/Preference;->getSharedPreferences()Landroid/content/SharedP references; move-result-object v0 invoke-interface {v0, p0}, Landroid/content/SharedPreferences;->registerOnSharedPreferenceChangeListener(L android/content/SharedPreferences$OnSharedPreferenceChangeListener;)V iget-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->c:Landroid/pr eference/Preference; new-instance v1, Lagm; # ☻new 一个 agm 对象 ☻ invoke-direct {v1, p0}, Lagm;-><init>(Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;) V invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preferen ce/Preference$OnPreferenceClickListener;)V #设置监听器 :cond_5 invoke-virtual {p0}, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->getPreference Screen()Landroid/preference/PreferenceScreen; move-result-object v0 const-string v1, "user_custom_private_pic_call" invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->findPreference(Ljava/lang/CharSequence;) Landroid/preference/Preference; move-result-object v0 #查找用户自定义“隐私空间”电话图标 List 的 Preference iput-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->d:Landroid/pr eference/Preference; #赋值给成员变量 d iget-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->d:Landroid/pr eference/Preference; if-eqz v0, :cond_0 iget-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->d:Landroid/pr eference/Preference; invoke-virtual {v0}, Landroid/preference/Preference;->getSharedPreferences()Landroid/content/SharedP references; move-result-object v0 invoke-interface {v0, p0}, Landroid/content/SharedPreferences;->registerOnSharedPreferenceChangeListener(L android/content/SharedPreferences$OnSharedPreferenceChangeListener;)V iget-object v0, p0, Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;->d:Landroid/pr eference/Preference; new-instance v1, Lagn; # ☻new 一个 agn 对象 ☻ invoke-direct {v1, p0}, Lagn;-><init>(Lcom/qihoo360/mobilesafe/ui/privatespace/PrivateSetupPreference;) invoke-virtual {v0, v1}, Landroid/preference/Preference;->setOnPreferenceClickListener(Landroid/preferen ce/Preference$OnPreferenceClickListener;)V goto/16 :goto_0 .end method 在“onCreate(Landroid/os/Bundle;)V”方法中可以看到分别对“隐私空间”设置 Activity 的“更改隐私密码”、“密码保护邮箱”、“主界面显示名称及图标”的点击事件分 别设置了监听器,而每个监听器则是 new 的一个对象,如为“密码保护邮箱”new 了一个 agp 对象,而“更改隐私密码”则 new 了一个 ago 对象,ago 对象是个什么对象? 通过我对 Proguard 生成的代码分析经验所得,它应该只是一个普通的监听器方法。 Proguard 会将一个类中的监听器方法抽取成一个单独而随机的类,而名称与变量的生成规 则是按照从“a-z”的方式生成,如第一个类方法会是 a(),下一个类方法如果参数与 a() 不同则是 a(xxx),这里的“xxx”就是参数列表,如果下一个方法名不能用 a()重载的方式 生成,就会用 b()方法来表示,同样不能用 b()来重载的方法就会用 c()来生成,以此类推, 变量名也是如此。 |