概述:
最近正在對公司的項目進行一些總結,將遇到的問題以及如何解決的記錄下來,以便于下次遇到這樣的問題還在冥思苦想上次是怎么解決的?這樣能節約很多時間。
主題:
我們在開發APP的時候難免會遇到在某些低端機和很卡的機器上面出現多次點擊某個按鈕或者頁面,這樣導致等手機響應后會彈出好幾個界面,最近發現Android端的微信的搜索頁面是沒有做處理的,連續點擊兩次搜索,會彈出兩次搜索頁面,除此之外,其他很多應用絕大多數App是沒有做處理的。
解決方案:
1、 通過判斷兩次點擊的時間間隔來防止重復點擊
public class ISDoubleClickUtils { PRivate static long lastClickTime; private final static int SPACE_TIME = 500; public static void initLastClickTime() { lastClickTime = 0; } public synchronized static boolean isDoubleClick() { long currentTime = System.currentTimeMillis(); boolean isClick2; if (currentTime - lastClickTime > SPACE_TIME) { isClick2 = false; } else { isClick2 = true; } lastClickTime = currentTime; return isClick2; }}private View.OnClickListener logListener = new View.OnClickListener() { @Override public void onClick(View view) { if (!ISDoubleClickUtils.isDoubleClick()) { 事件響應方法 } }};2、通過修改manifest中頁面的launchMode屬性改為單例模式<activity android:name=".MainActivity" android:launchMode="singleTask" android:screenOrientation="portrait" />singleTask啟動模式是當前棧中是否有該實例,如果有并且位于棧頂則使用該實例,如果有但是不位于棧頂,則將該實例上面的所有實例刪除以達到棧頂。所以可以保證任務棧中只有這一個實例。
3、利用RxBinding實現防重復點擊RxView.clickEvents(button) .throttleFirst(500, TimeUnit.MILLISECONDS) .subscribe(clickAction); RxBinding 是 Jake Wharton 的一個開源庫,它提供了一套在 Android 平臺上的基于 Rxjava 的 Binding API。
新聞熱點
疑難解答