android 8种对话框(Dialog)使用方法汇总
作者:@gzdaijie
本文为作者原创,转载请注明出处:http://www.cnblogs.com/gzdaijie/p/5222191.html
获取手机型号
1. 获取手机型号:
String model= android.os.Build.MODEL;
2. 获取手机厂商:
String carrier= android.os.Build.MANUFACTURER;
这里需要注意的是,SDK1.5是不支持这个参数的。
这个很好
从源码中我们可以看出FragmentStatePagerAdapter中fragment实例在destroyItem的时候被真正释放,所以FragmentStatePagerAdapter省内存。FragmentPagerAdapter中的fragment实例在destroyItem的时候并没有真正释放fragment对象只是detach,所以FragmentPagerAdapter消耗更多的内存,带来的好处就是效率更高一些。所以得出这样的结论:FragmentPagerAdapter适用于页面比较少的情况,FragmentStatePagerAdapter适用于页面比较多的情况,因此不同的场合选择合适的适配器才是正确的做法
setOnItemClickListener()方法中position是从0开始计算的
selector排序
java中Collections.sort排序详解
http://blog.csdn.net/tjcyjd/article/details/6804690
android服务的关闭问题
1.先调用startService然后点击bindService然后再点击stopService
吓一跳,怎么不是我所想的最后会执行销毁的方法!原来[android](http://lib.csdn.net/base/android)中startService开启服务后再bindService绑定服务就不能通过stopService来停止服务.需要先调用unbindService再调用stopService来停止服务
2.先调用bindService然后点击startService然后再点击stopService
![](https://img.haomeiwen.com/i6562341/0d3b3252a3ac0892?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这里和上面是一样的结果,通过bindService启动服务的,之后只能靠unbindService来停止服务,并且只能调用一次,否则会挂掉,还有就是因为是绑定的,所以Activity退出的时候也会销毁这个服务
需求:在activity中要得到service对象进而能调用对象的方法,但同时又不希望activity finish的时候service也被destory了。
startService和bindService混合使用就派上用场了。
首先要明确的一点就是不管startservice和bindservice操作的都是同一个service对象。
**混合使用的生命周期:**
先startservice后bindservice : oncreate()—>onstartcommand()—>onbind()
先bindservice 后startservice: oncreate()—>onbind ()—>onstartcommand()
销毁时候的生命周期:
stopService:没有调用onDestory() Service仍然在运行!unbindService:调用onUnbind()->onDestory() 此时Service关闭!
unbindService:调用onUnbind() Service仍然在运行!stopService调用onDestory() 此时Service才关闭!
[图片上传中。。。(4)]gradle配置路径
android请求权限问题
请求权限,经测试发现TabActivity管理Activity时,在Activity中请求权限时需要传入父Activity对象,即TabActivity对象,并在TabActivity中重写onRequestPermissionsResult并分发到子Activity,否则回调不执行 。TabActivity回调中 调用
TAbActivity中的回调代码
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
getLocalActivityManager().getCurrentActivity()
.onRequestPermissionsResult(requestCode, permissions, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
分发到子Activity
TAbActivity的字Activity代码
ActivityCompat.requestPermissions(Activity_test.this.getParent(),
new String[]{ Manifest.permission.CALL_PHONE }, REQUEST_CODE);
正则表达式相关内容
需要匹配的内容为:
【页面信息】:预览演示[url=http://w1.ttkefu.com/k/yulan.jsp?fgid=2H7CG8]http://w1.ttkefu.com/k/yulan.jsp?fgid=2H7CG8[/url]
正则表达式之匹配规则
Pattern patternURL = Pattern.compile("\\[url.{8,}\\[\\/url\\]");
Matcher matcherURL = patternURL.matcher(content);
if (matcherURL.find()) { //确定内容是否与正则表达式匹配
String s1=matcherURL.group();//截取正则表达式匹配的文本
String mm = s1.substring(5,matcherURL.group().length() - 6);
String[] file_name = mm.split("]");//已"]"这个符号将字符串分割成字符串数组
file_name[0]=http://w1.ttkefu.com/k/yulan.jsp?fgid=2H7CG8
file_name[1]=http://w1.ttkefu.com/k/yulan.jsp?fgid=2H7CG8
String s2 = content.replace(matcherURL.group(),""); //将正则表达式匹配的内容替换为空,留下正则表达式外面的内容
s2的内容为:【页面信息】:预览演示
s1的内容为:[url=http://w1.ttkefu.com/k/yulan.jsp?fgid=2H7CG8]http://w1.ttkefu.com/k/yulan.jsp?fgid=2H7CG8[/url]
网友评论