Aprendizagem de aplicativo de aula básica básica do Android

No Ano Novo, você quer uma faca para matar porcos, patos e galinhas. O que eles têm em comum é que todos precisam do método da "faca". Você tem duas maneiras de conseguir uma faca. Primeiro, peça emprestada aos seus vizinhos . Se você usar a faca apenas uma vez por muito tempo, poderá pegá-la emprestada com seus vizinhos. Em segundo lugar, depois de fazer a faca, você pode usar uma faca repetidamente para matar. Caso contrário, você só pode pegar a faca hoje e amanhã. Tenho que pegar uma faca emprestada novamente, o que é uma perda de tempo.

O que aprendi hoje é a fazer eu mesmo uma faca. A classe básica é uma faca. O método comum é matar galinhas ou patos.

No desenvolvimento baseado em componentes, várias funções foram diferenciadas e modularizadas.A mesma interface é freqüentemente usada em módulos ou o mesmo método funcional precisa ser implementado.
Ou passe alguns parâmetros comumente necessários, etc. Neste momento, você precisa usar a classe base para encapsular os métodos comumente usados.
Aqui um protected declara um parâmetro, que pode ser obtido exceto pacote que não pode ser compartilhado.
Neste exemplo, cada classe de método precisa implementar ou obter o retorno de chamada da interface de mAccessibilityService ao obter o serviço auxiliar AccessibilityService. Neste momento, é adequado para use a classe base para encapsulamento
.:

			/**
	 *  辅助服务事件观察者基类
	 **/	
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) {

}
}

No exemplo aqui, as duas interfaces de processamento de janela do serviço auxiliar são encapsuladas em uma classe base, que também é uma classe pai para os herdeiros chamarem. O
seguinte é um exemplo de chamada:

	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
	    }

Exemplo 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);
	    }
	    }

Transforme alguns métodos ou interfaces públicos em uma classe base para os herdeiros usarem para outras funções.

Acho que você gosta

Origin blog.csdn.net/weixin_41422638/article/details/112984442
Recomendado
Clasificación