2016年7月20日 星期三

[Android]時間倒數countDownTimer

今天在開發時,需要製作一個倒數的功能
在以前開發時我總是使用Timer or Runnable去手動開發倒數功能


結果今天居然讓我意外發現了原本Android就有個類別是倒數功能

就是--
CountDownTimer 

而且這個class還是android api 1就有了...身為android開發者還真是慚愧居然不知道這個類別

使用方法大致是這樣(官方範例)

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
     }
  }.start();


參數也非常簡單

CountDownTimer(long millisInFuture, long countDownInterval)


millisInFuture-總共倒數時間

countDownInterval-倒數間隔時間


然後實作兩個方法
onTick -倒數時做的事情
onFinish-倒數結束時的事情


是不是很方便阿~

最後附上官方說明:
https://developer.android.com/reference/android/os/CountDownTimer.html

2016年7月12日 星期二

[Android]Google play 上架,應用程式更新遭到拒絕

今天在上架Android apk新版本時候遇到了

應用程式更新遭到拒絕:
您的 APK 含有安全性漏洞,此舉違反惡意行為政策,因此遭到拒絕。如果您提交的是更新版本,那麼前一個應用程式版本仍會保留在 Google Play 商店中。


上架過這麼多android app了,還是第一次遇到被退貨的apk...

在經過查詢之後才發現,原來是之前webview 忽略 ssl ,被google說是安全性漏洞了,那裡的確是為了測試方便,不過居然被退貨還真是神奇(?)

後來將webview的這裡:

    @Override
      @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                 handler.proceed();
            }


拿掉之後,再重新送審

果然就成功上架了....沒想到google 還真的是有在審查app呀..


2016年7月8日 星期五

Android Fragment in Viewpager 避免初始化 onResume

在開發Android 的過程中,常常會使用到viewpager來幫助開發

但有時候又希望viewpager 裡面的 fragment 不要在一開始setAdapter時就加載。

因為如果fragment裡面,我們做了許多的網路API request,或是圖片的加載,那麼如果fragment的數量多,就會讓使用者等很久

所以在拜過Google 大神後,發現到 viewpager 會手動調用 fragment裡面的public void setUserVisibleHint(boolean isVisibleToUser) 方法,

這個方法很好理解,
就是當我們滑動到某一個fragment,或是 viewPager.setCurrentItem(n)時,就會調用到這個方法

所以我們可以將這個方法看成:

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            // fragment onResume
        } else {
            // fragment onPause
        }
    }


這樣是不是很簡單呢~~