【Android日誌】2016_01_25週:どこまでnullチェックすればいいのか他
shouldOverrideUrlLoading()はpostだと呼ばれないよ
webViewのページ読み込み時にURLを割り込みできる関数だが、
/** * Give the host application a chance to take over the control when a new * url is about to be loaded in the current WebView. If WebViewClient is not * provided, by default WebView will ask Activity Manager to choose the * proper handler for the url. If WebViewClient is provided, return true * means the host application handles the url, while return false means the * current WebView handles the url. * This method is not called for requests using the POST "method". * * @param view The WebView that is initiating the callback. * @param url The url to be loaded. * @return True if the host application wants to leave the current WebView * and handle the url itself, otherwise return false. */
と書いてある通り、postだとこの関数は呼ばれない。
WebView form - POST をインターセプト-Oboe吹きプログラマの黙示録
じゃあどうするのかと、jsで埋め込んでなんとかする方法がちらほら…。 ここまで対応すべきかどうかどうかは不明。
どこまでnullチェックすればいいのか?
自分の中で、いまいちこのへんの感覚がわからなかったので、調査。
呼んでくるメソッドがnullを返さないことがわかっていれば、もちろんnullチェックをしなくていいけど、
onDestory()
が呼ばれた後に通信のコールバックが返ってくる時とかは、nullになることがあるし…。
アプリを触りながらそういうところをチェックするのではなく、ソースの中でロジックで考えるように心がけようと思った。
webView読み込み途中でのクラッシュ
05:27:57.165 799-14680/? W/ActivityManager﹕ Process jp.co.hoge.hogeapp has crashed too many times: killing! 01-29 05:27:57.165 799-14680/? W/ActivityManager﹕ Force finishing activity hogehoge
webViewにてページの読込中の際に読み込み途中のページのボタンをタップすると落ちることはある。 RuntimeErrorではないからエラーログなどは取れない代わりにこのようなログアリ。
いくつもスレッドが走ることで落ちるものなのかな、と思いつつ根本的な解決が不明。
- 読み込みが終わるまでwebViewをINVISIBLEにしておく
これで対応するしかないのかもしれない…。
Android Javaでフィールドにプレフィックスをつけるのはやめようの理由
今週話題になった記事について結局なんでこんなこと言ってるの?がわからなかった。
- 昔のテキストエディタは精度が悪かったため、今みたいにメンバ変数に色とかつけてくれなかった
- 昔のCの名残りなど
- 今はIDEなどが発達してきて色などをつけてくれるから、プレフィックスが必要なくなったと考える
みたい!