Androidの基本的な基本クラスのアプリケーション学習

正月には、豚、アヒル、鶏を殺すためのナイフが必要です。共通しているのは、すべて「ナイフ」方式が必要なことです。ナイフを入手するには2つの方法があります。まず、近所の人から借ります。 。ナイフを長期間使用する場合は、近所の人から借りることができます。次に、ナイフを作った後、繰り返しナイフを使用して殺すことができます。それ以外の場合は、今日と明日しかナイフを持てません。もう一度ナイフを借りなければならず、時間が無駄になります。

今日学んだのは自分でナイフを作ることです。基本クラスはナイフです。一般的な方法は鶏やアヒルを殺すことです。

コンポーネントベースの開発では、さまざまな機能が差別化され、モジュール化されています。同じインターフェイスがモジュールで使用されることが多いか、同じ機能メソッドを実装する必要があります。
または、一般的に必要なパラメータなどを渡します。このとき、基本クラスを使用して、一般的に使用されるメソッドをカプセル化する必要があります。
ここで、プロテクトは、共有できないパッケージを除いて取得できるパラメータを宣言します。
この例では、各メソッドクラスは、補助サービスAccessibilityServiceを取得するときに、mAccessibilityServiceのインターフェイスコールバックを実装または取得する必要があります。カプセル化には基本クラスを使用します
。:

			/**
	 *  辅助服务事件观察者基类
	 **/	
public abstract class BaseEventObserver {

protected final Context mContext;

protected final AccessibilityService mAccessibilityService;
	// protected Handler  mHandler = new Handler();

public BaseEventObserver(Context context, AccessibilityService service) {
    mContext = context;
    mAccessibilityService = service;
}

public Context getContext() {
    return mContext;
}

public AccessibilityService getAccessibilityService() {
    return mAccessibilityService;
}

/**
 * 设置APP窗口变化处理
 *

 */
	//    public abstract void onWindowsChanged(String pkgName);
public abstract void onWindowsChanged(AccessibilityEvent event, String pkgName);

/**
 * 窗口变化处理
 *

 */
	 public void onWindowsChanged(AccessibilityNodeInfo info, AccessibilityEvent event, String pkgName) {

}
}

この例では、補助サービスの2つのウィンドウ処理インターフェイスが基本クラスにカプセル化されています。基本クラスは、継承者が呼び出す親クラスでもあります。
呼び出し例を次に示します。

	public class AutoSetPermissionClicker extends BaseEventObserver implements IAutoPermission, IModelCallback {
	
	    private boolean mClickedUsage = false;
	    // 找到自身APP的时间 用于过滤点击
	    private long mFindMyAppTime;
	
	    public AutoSetPermissionClicker(Context context, AccessibilityService service) {
	        super(context, service);
	
	        PermissionModelSingleton.getInstance().registerModelCallback(this);
	    }
	
	    @Override
	    public void autoPermission(AccessibilityEvent accessibilityEvent, AccessibilityService accessibilityService) {
	        if(!ActivityHolder.isAgreeEula()){
	            return;
	        }
	
	    }
	
	    /**
	     * 设置APP窗口变化处理
	     */
	    @Override
	    public void onWindowsChanged(AccessibilityEvent event, String pkgName) {
	
	    }
	
	    /**
	     * 窗口变化处理
	     */
	    public void onWindowsChanged(AccessibilityNodeInfo info, AccessibilityEvent event, String pkgName) {
	//        if(ActivityHold.isAgreeEula()) {
	//            autoClick(info); // for 忽略省电优化
	//        }
	    }
	
	    /**
	     * 窗口变化处理
	     */
	    @Override
	    public void onPermissionWindowsChanged(AccessibilityNodeInfo info, AccessibilityEvent event, String pkgName) {
	//        if(!ActivityHold.isAgreeEula()){
	//            return;
	//        }
	//        autoClick(info); // slowly
	    }

例2

				/**
	 * @brief	    过滤屏蔽内置浏览器打开链接
	 **/
	public class BroserInterceptObserver extends BaseEventObserver {
	
	    private static boolean isAliPayChatWindow = false;
	    private static boolean isWeChatChatWindow = false;
	    //false 开启拦截 true 打开拦截
	    private static boolean InternalBrowserWatcher_AliPay=false;
	    private static boolean InternalBrowserWatcher_WeChat=false;
	    private static boolean InternalBrowserWatcher_DingDing=false;
	    private static final String TAG = "BroserInterceptObserver";
	    private ExitHandler mExitHandler;
	    private static final int MSG_WHAT_LAUNCHER_BROSER=1;
	    private static final int MSG_WHAT_WEICHAT_BROSER=0;
	    private static final int MSG_WHAT_SCREEN_BROSER=2;
	    private static final int MSG_WHAT_SCREEN_NOTIFICATION=3;
	   
	
	    public BroserInterceptObserver(Context context, AccessibilityService service) {
	        super(context, service);
	        mExitHandler = new ExitHandler(this);
	
	    }
	
	    @Override
	    public void onWindowsChanged(AccessibilityEvent event, String pkgName) {
	       // boolean browserWatcher = isInternalBrowserWatcher();
	        //Log.d(TAG, "onWindowsChanged.......browserWatcher=" + browserWatcher);
	    }
	    }

継承者が他の関数に使用できるように、いくつかのパブリックメソッドまたはインターフェイスを基本クラスにします。

おすすめ

転載: blog.csdn.net/weixin_41422638/article/details/112984442