1、如何使在横竖屏切换时Acivity不重新创建
需要在AndroidManifest.xml中对需要设置该属性的Activity加入
android:configChanges="orientation|keyboardHidden|screenSize"
在4.0以后都需要加上screenSize属性否则不起效果,但是如果切换系统语言,Acivity仍然会重新创建。
2、如何让应用不出现在最近任务列表(Recent List)里面
需要在AndroidManifest.xml中application或者activity内添加
android:excludeFromRecents="true"
3、如何监听对话框的消失事件
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setMessage("MY NAME IS JIANWEI").setTitle("NOTE")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("CANCLE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
Log.d("OOO", "onDismiss");
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
Log.d("OOO", "onCancel");
}
});
builder.create().show();
注册setOnDismissListener监听器,用户使用back键或者调用dialog.dismiss()和dialog.cancel()都会响应,注册setOnCancelListener的话只会响应dialog.cancel(),
注意setOnDismissListener的方法一定要写在builder.create().show()前,否则将不会回调,同时也不会报任何错误。
4、监听系统功能的启动和关闭状态,例如:飞行模式
String SAVE_NAME = Settings.Global.AIRPLANE_MODE_ON;
getContentResolver().registerContentObserver(Settings.System.getUriFor(SAVE_NAME), true, new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.d("OOO", "data was changed,do someting now");
}
});