AsyncTaskのdoInBackgroundが途中終了する
AsyncTaskのdoInBackgroundが途中終了する現象に遭遇して四苦八苦しました。
AsyncTaskの呼び出し元のスレッドかActivityが終了すると、doInBackgroundも途中終了するような感じです。。
正確な記載でなくてすいません。
DatePickerDialogのonDateSetが2回よばれる。
機種依存かもしれないですが、DatePickerDialogのonDateSetが2回よばれる現象が発生しました。
その場合の対処法:
DatePickerDialog.OnDateSetListener DateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(android.widget.DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
if (!datePicker.isShown()) {
return;
}
displayCalendarView(year, monthOfYear);
mCallBack.monthChangedCallBack(prevYear, prevMonth, year, monthOfYear);
}
};
下記の部分で、2回目のonDateSetの対処しています。
if (!datePicker.isShown()) {
return;
}
こんな対応で良いのか?
Dialogが閉じたことを検出する
Dialogが閉じたことを検出する。
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
}
});
setTextの文字が途中で切れてしまうとき
textView.setText()で設定した文字が途中で切れてしまうことがありました。
そんな時、
textView.setInputType(InputType.TYPE_CLASS_TEXT);
というように、textViewですが、InputTypeをTEXTにしてやったら解決することがあります。
理由は不明ですが・・・。
BACKボタンのイベントを取得する
BACKボタンのイベントを取得するには、Activity#onKeyDownを使用します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
moveTaskToBack(true);
return super.onKeyDown(keyCode, event);
}else{
return super.onKeyDown(keyCode, event);
}
}
Androidでアプリを終了させる
Activity#moveTaskToBack (boolean nonRoot)
アプリケーション全体を終了する際の推奨される終了方法です。
アプリケーションを中断状態にします。
moveTaskToBack(true);