https://blog.youkuaiyun.com/long375577908/article/details/64440186
这个问题折腾了我好几天 我去
找到上面这哥们的博客 才明白
private View.OnClickListener mTileClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO: get rid of setTag/getTag
Log.e(TAG, "onClick");
mDashboardFeatureProvider.openTileIntent((Activity) mContext, (Tile) v.getTag());
}
};
DashboardAdapter.java
点击 一级菜单 已连接的设备 的运行日志
07-23 09:30:12.030 2607 2607 E DashboardAdapter: onClick
07-23 09:30:12.048 2013 2093 I ActivityManager: wocao START u0 {flg=0x8000 cmp=com.android.settings/.Settings$ConnectedDeviceDashboardActivity (has extras)} from uid 1000
07-23 09:30:12.136 2607 2607 D SettingsActivity: Starting onCreate
07-23 09:30:12.204 2607 2607 D SettingsActivity: Starting to set activity title
07-23 09:30:12.204 2607 2607 D SettingsActivity: Done setting title
07-23 09:30:12.204 2607 2607 D SettingsActivity: Switching to fragment com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment
07-23 09:30:12.206 2607 2607 I ConnectedDeviceFrag: getPreferenceScreenResId
07-23 09:30:12.220 2607 2607 D DiscoverableFooterPreferenceController: init
07-23 09:30:12.222 2607 2607 I ConnectedDeviceFrag: getPreferenceScreenResId
07-23 09:30:12.251 2607 2607 W ConnectedDeviceGroupController: displayPreference
07-23 09:30:12.275 2607 2607 D ConnectedDeviceFrag: NO dashboard tiles for ConnectedDeviceFrag
07-23 09:30:12.276 2607 2607 D SettingsActivity: Executed frag manager pendingTransactions
07-23 09:30:12.324 2607 2607 W ConnectedDeviceGroupController: onStart
07-23 09:30:12.358 2607 2607 D AlwaysDiscoverable: AlwaysDiscoverable start
07-23 09:30:12.373 2607 2607 E BluetoothAdapter: mode1 = 23
07-23 09:30:12.375 2607 2607 E BluetoothAdapter: mode2 = 23
07-23 09:30:12.378 2446 2460 W BluetoothAdapterService: setScanMode
07-23 09:30:12.379 2446 2460 W BluetoothAdapterService: setScanModeasd
07-23 09:30:12.380 2446 2628 E BluetoothServiceJni: adapter_properties_callback: Status2 is: 0, Properties: 1
07-23 09:30:12.380 2446 2460 W AdapterProperties: setScanModekkkk
07-23 09:30:12.381 2446 2628 D AdapterProperties: Discoverable Timeout:120
07-23 09:30:12.382 2446 2628 E BluetoothServiceJni: adapter_properties_callback: Status2 is: 0, Properties: 1
07-23 09:30:12.384 2446 2628 D AdapterProperties: Scan Modex:23
07-23 09:30:12.401 2607 2607 D DashboardSummary: Stopped listening for condition changes
07-23 09:30:12.402 2607 4326 D SettingsActivity: No enabled state changed, skipping updateCategory call
07-23 09:30:12.496 2607 2607 D AlwaysDiscoverable: AlwaysDiscoverable(): onReceive android.bluetooth.adapter.action.SCAN_MODE_CHANGED
研究代码如不能从头开始研究 感觉心里没底
是不是有强迫症?
感觉这个点就是 研究下去的handle
可以从头一直贯穿到结尾
public boolean performClick() {
// We still need to call this method to handle the cases where performClick() was called
// externally, instead of through performClickInternal()
notifyAutofillManagerOnClick();
final boolean result;
final ListenerInfo li = mListenerInfo;
if (li != null && li.mOnClickListener != null) {
playSoundEffect(SoundEffectConstants.CLICK);
Log.w(VIEW_LOG_TAG, "li = " + li);
Log.w(VIEW_LOG_TAG, "li.mOnClickListener = " + li.mOnClickListener);
Log.w(VIEW_LOG_TAG, "this = " + this);
li.mOnClickListener.onClick(this);
result = true;
} else {
result = false;
}
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
notifyEnterOrExitForAutoFillIfNeeded(true);
return result;
}
frameworks/base/core/java/android/view/view.java
07-23 10:17:09.890 3110 3110 W View : li = android.view.View$ListenerInfo@3cfe2a
07-23 10:17:09.891 3110 3110 W View : li.mOnClickListener = com.android.settings.dashboard.DashboardAdapter$1@de5341b
07-23 10:17:09.891 3110 3110 W View : this = android.widget.LinearLayout{85999b8 VFE...C.. ...P.... 160,208-1120,280 #7f0a00e5 app:id/dashboard_tile}
07-23 10:17:09.891 3110 3110 E DashboardAdapter: onClick
07-23 10:17:09.891 3110 3110 W System.err: simulator exception: java.lang.RuntimeException: error is here
07-23 10:17:09.892 3110 3110 D run stack: simulator
07-23 10:17:09.892 3110 3110 D run stack: java.lang.RuntimeException: error is here
07-23 10:17:09.892 3110 3110 D run stack: at com.android.settings.dashboard.DashboardAdapter$1.onClick(DashboardAdapter.java:88)
07-23 10:17:09.892 3110 3110 D run stack: at android.view.View.performClick(View.java:6602)
07-23 10:17:09.892 3110 3110 D run stack: at android.view.View.performClickInternal(View.java:6574)
07-23 10:17:09.892 3110 3110 D run stack: at android.view.View.access$3100(View.java:778)
07-23 10:17:09.892 3110 3110 D run stack: at android.view.View$PerformClick.run(View.java:25907)
07-23 10:17:09.892 3110 3110 D run stack: at android.os.Handler.handleCallback(Handler.java:873)
07-23 10:17:09.892 3110 3110 D run stack: at android.os.Handler.dispatchMessage(Handler.java:99)
07-23 10:17:09.892 3110 3110 D run stack: at android.os.Looper.loop(Looper.java:193)
07-23 10:17:09.892 3110 3110 D run stack: at android.app.ActivityThread.main(ActivityThread.java:6669)
07-23 10:17:09.892 3110 3110 D run stack: at java.lang.reflect.Method.invoke(Native Method)
07-23 10:17:09.892 3110 3110 D run stack: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
07-23 10:17:09.892 3110 3110 D run stack: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:951)
07-23 10:17:09.898 2057 3292 I ActivityManager: wocao START u0 {flg=0x8000 cmp=com.android.settings/.Settings$ConnectedDeviceDashboardActivity
其实早就应该在view类中加入调试信息
就可快速定位到 入口点了
因为不管什么按钮条目 他的总入口只能是view