コンパイル中にふとタスクマネージャーを見ると、負荷とCPUクロックが反比例している!?
アイドル時100%近いのは電源オプションの「高パフォーマンス」設定から来ているので問題ない。問題は負荷をかけた時にクロックが下がっている部分。逆だろ!何か最近ノートPCに気合いが足りない感じがしていたが…こいつは…
いろいろ調べた結果、犯人はACアダプター!?なにをバカな、、、と思ったが、そうだ、最近出先でACアダプターを忘れたので互換品を買ってそのまま使っていたのだった。製品仕様的には全く問題ないものだが、最近のPCは互換品をチェックしてるらしい。
何か回避する方法は無いかなとSmrtAdptr.exeというのを見つけてリネームしたりしてみたが、そんな簡単な問題ではないみたいなので、大人しく元のアダプターに戻した。
互換アダプター使っている人は、PCがダラけてないか見てみたほうがいいかも。
※純正アダプターでも一度同じ症状が出たが端子抜き差しでなおった。
2017年4月26日水曜日
2017年4月20日木曜日
選択アイテム0個でもActionModeを抜けたくない
CHOICE_MODE_MULTIPLE_MODALで、選択アイテム0個でもActionModeを抜けない方法(以下で質問者が自己レスしてる方法)。こんな方法しかないのかよって感じだが、とりあえず動作はする。
How to prevent close action mode when no item is selected
正攻法としては、これもCHOICE_MODE_MULTIPLEを使うしか無いのかな。
長押し以外でActionModeに入る
ListViewのCHOICE_MODE_MULTIPLE_MODALで、長押し以外でActionModeに入りたい。簡単にできそうなもんだが見つからない。一つのアイテムが選択状態になってもいいなら、以下でActionModeに入ることができる。
今回は、選択アイテム0の状態でActionModeに入りたかったので、結局Activity.startActionMode()とCHOICE_MODE_MULTIPLEを使うことにした。
ListView.setItemChecked(selectedItemPosition, true);
今回は、選択アイテム0の状態でActionModeに入りたかったので、結局Activity.startActionMode()とCHOICE_MODE_MULTIPLEを使うことにした。
2017年3月31日金曜日
Chromeの翻訳ボタンが機能しない
アドレスバーの右横にあるやつ。押せるが全然翻訳されない。設定も初期化した、再インストールもした、レジストリもクリアした。でも全然ダメ。隣のマシンでは普通に翻訳できてるのに。
その後、翻訳APIが403を返してることがわかった。APIパラメータのkeyがnoになっとる。結局、GOOGLE_API_KEYという環境変数が悪さをしていたことが判明。こいつがnoになってた。何かのソフトをインストールした時に入ったっぽい。この環境変数を消去して解決した。本当のkeyはChromeが持ってるからOK。
その後、翻訳APIが403を返してることがわかった。APIパラメータのkeyがnoになっとる。結局、GOOGLE_API_KEYという環境変数が悪さをしていたことが判明。こいつがnoになってた。何かのソフトをインストールした時に入ったっぽい。この環境変数を消去して解決した。本当のkeyはChromeが持ってるからOK。
2017年3月13日月曜日
アンインストールしてもSharedPreferencesが消えない
デバッグ時に新規インストール時の状況を作り出せなくてはまった。
androidの設定画面で、以下がONになっているとSharedPreferencesが復活する。
設定 -> バックアップとリセット -> 自動復元
設定 -> バックアップとリセット -> 自動復元
2017年2月23日木曜日
BadParcelableException
Android 4.2.2にて(6.0.1では大丈夫だった)。
SupportMapFragmentで以下のライブラリを使用して、Activity再生成すると落ちる。
https://github.com/Clans/FloatingActionButton
MapViewでも同様のようだ。
https://github.com/Clans/FloatingActionButton/issues/56
これはこのライブラリのせいじゃなくてGoogleのせい。2014年からすでに話題になっているが、いまだになおってない。
→com.google.android.gms:play-services-maps:10.2.0 でなおってた
詳しい原因は分からないが、Activity再生成時(saveInstanceState != null)にsaveInstanceStateにParcelクラスのインスタンス(今回は上記ライブラリの状態情報)が入っていると落ちる。onCreateでsuper.onCreate(savedInstanceState)をやるまえに、savedInstanceStateからこのインスタンスを削除してやれば落ちない(削除する状態情報はあとで自前で復帰してやる)。こんな感じ?
以下にMapViewの例がある。
SupportMapFragmentで以下のライブラリを使用して、Activity再生成すると落ちる。
https://github.com/Clans/FloatingActionButton
MapViewでも同様のようだ。
https://github.com/Clans/FloatingActionButton/issues/56
これはこのライブラリのせいじゃなくてGoogleのせい。
→com.google.android.gms:play-services-maps:10.2.0 でなおってた
詳しい原因は分からないが、Activity再生成時(saveInstanceState != null)にsaveInstanceStateにParcelクラスのインスタンス(今回は上記ライブラリの状態情報)が入っていると落ちる。onCreateでsuper.onCreate(savedInstanceState)をやるまえに、savedInstanceStateからこのインスタンスを削除してやれば落ちない(削除する状態情報はあとで自前で復帰してやる)。こんな感じ?
if(savedInstanceState != null) {
SparseArray viewState = (SparseArray)savedInstanceState.get("android:view_state");
mButton1State = (Parcelable)viewState.get(R.id.button1, null);
viewState.remove(R.id.button1);
}
2017年2月6日月曜日
Runtime Permission
アプリ動作中に設定からアプリの権限を変更したらどうなるか?
・拒否から許可に変えた場合
→Pause中ActivityのonResume()から再開
・現状が許可であろうと拒否であろうと、一度でも拒否にした場合
→Applicationインスタンスが再生成され、
Pause中のActivityも再生成される。
(fragmentはsetRetainInstance(true)がされている場合はonCreateViewから)
・拒否から許可に変えた場合
→Pause中ActivityのonResume()から再開
・現状が許可であろうと拒否であろうと、一度でも拒否にした場合
→Applicationインスタンスが再生成され、
Pause中のActivityも再生成される。
(fragmentはsetRetainInstance(true)がされている場合はonCreateViewから)
2017年2月3日金曜日
MaterialSeekBarPreference
設定画面にスライダーを表示したくてPreferenceFragmentCompatを試したが何故かうまくいかず、何とか簡単に済ませる方法はないものかと探して、このライブラリにたどり着いた。
MaterialSeekBarPreference
しかしなぜかSeekBarの値がTextViewに反映されない。notifyChanged()したりいろいろ試したが、結局、PreferenceFragmentを挿れる部分がルート?(android.R.id.content)じゃないとダメだということがわかった。
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceFragment()).commit();
しかし、これくらい標準で簡単にできるようにしてくれ。
MaterialSeekBarPreference
しかしなぜかSeekBarの値がTextViewに反映されない。notifyChanged()したりいろいろ試したが、結局、PreferenceFragmentを挿れる部分がルート?(android.R.id.content)じゃないとダメだということがわかった。
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceFragment()).commit();
しかし、これくらい標準で簡単にできるようにしてくれ。
2017年2月1日水曜日
PreferenceFragmentCompat
以下が出てハマった。
Caused by: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list_container' that is not a ViewGroup class
かなり調べたが解決ならず。サポートライブラリのバグという話もある。
Caused by: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list_container' that is not a ViewGroup class
かなり調べたが解決ならず。サポートライブラリのバグという話もある。
PreferenceFragmentCompatはこの問題を解決できたとしてもいろいろ鬼門っぽいので、とりあえず他の方法を考えるか・・・
Support Libraryの最新バージョン
以下でわかる。日本語で見ると情報が古いので注意。
https://developer.android.com/topic/libraries/support-library/packages.html
ちなみに、Support Libraryを使用するためには、Android Support Repository パッケージのインストールが必要。
https://developer.android.com/topic/libraries/support-library/setup.html?hl=ja
https://developer.android.com/topic/libraries/support-library/packages.html
ちなみに、Support Libraryを使用するためには、Android Support Repository パッケージのインストールが必要。
https://developer.android.com/topic/libraries/support-library/setup.html?hl=ja
startForegroundの引数
startForeground(int, Notification)
第一引数はnotificationのID。0はダメ。
以前は第二引数にアイコン0のNotificationを渡せば通知を非表示にできたらしいが、4.3あたりからできなくなったらしい。
第一引数はnotificationのID。0はダメ。
以前は第二引数にアイコン0のNotificationを渡せば通知を非表示にできたらしいが、4.3あたりからできなくなったらしい。
登録:
投稿 (Atom)
