SPUtils
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185/** * @author xzj * @date 2016/8/24 15:40. */import a ...
onStartCommand中的intent为null
当需要在服务中,对intent做什么事情的时候,先加入这个判断,特别是那个getAction不能忘了123if (intent!=null && intent.getAction()!=null) { //do something}
无法收到开机广播
国内第三方厂商对自启动做了一些限制,比如小米要在安全中心–>授权管理–自启动管理里添加三星要在智能管理器里面添加…
注意:1、2.3版本以后 系统提供快速启动选项,如果使用,系统不会发开机完成的系统广播;2、3.1以后,安装程序要启动一次才会运行接受系统广播,为了防止恶意的内置应用;3、手机软件如360,定制系统如小米等,会设置禁止应用自启动,如果不在白名单,同样收不到系统广播;
1234567<!--关机重启时启动服务,重新设置闹钟--><receiver android:name=".receiver.BootCompletedReceiver"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.int ...
ExpandableListView中childview的数据出现了2次
问题:给child的集合个数是3个,但是打开折叠,出现了6个数据,debug发现getChildView执行了groupCount×childCount×2次,这显然是不合理的
原因:虽然ExpandableListView提供了点击、展开、折叠的监听123listview.setOnGroupClickListener()listview.setOnGroupExpandListener()listview.setOnGroupCollapseListener()
但ExpandableListView自己就实现了点击group展开,再次点击折叠,不需要手动去写这个操作。除非需要同一时间只允许打开一个group,那么可以1234567891011//展开监听,展开的时候遍历所有组,将其他的折叠起来 listview.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGro ...
用okhtt/retrofit下载文件
项目中需要在开屏页下载东西,在github上发现一个好用的框架大家可以去https://github.com/lingochamp/FileDownloader/blob/master/README-zh.md查看关于retrofit的用法就不多说了,这个框架依赖于okhttp 3.4.1
首先在项目中引用compile 'com.liulishuo.filedownloader:library:0.3.4'
然后在Application的onCreate()中初始化FileDownloader.init(applicationContext);
在工具类中丢进这2个方法1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031 ...
TextView中添加下划线、不同颜色、点击跳转的字
如果需要实现这种效果,直接上代码1234567891011121314151617181920tv = (TextView) findViewById(R.id.tv); tv.append("hehehehahaha"); SpannableString ssb = new SpannableString("点击跳转"); ssb.setSpan(new ClickableSpan() { @Override public void onClick(View view) { startActivity(new Intent(MainActivity.this,SecondActivity.class)); //点击跳转 } @Override public void updateDrawState(TextPaint ds) ...
radioGroup.check()执行了多次OnCheckedChangeListener()
问题:我对某个radioButton里面写了个startActivity跳转到另一个界面,然后那个界面finish()之前需要调用radioGroup.check(),发现又跳转进这个界面了,纳闷之下,debug走起,发现OnCheckedChangeListener()走了好几次,所以页面又被启动了。
解决:将radioGroup.check() 替换成radioButton.setChecked(true);
解决toggleButton关闭状态初始化背景无效
做安卓开发想必最头疼的是“与IOS一样”了,询问IOS这个怎么做的,那个怎么做的,答曰:系统默认的/系统提供了···
安卓也提供了toggleButton,不过项目开发中为了保持一致性,设计师基本需要用到开关的时候基本用的还是IOS得那种,于是我找到了https://github.com/zcweng/ToggleButton 这哥们写的用的时候发现在初始化的时候,会出现不绘制背景的问题。。。
解决:将onLayout中最后一句offLineWidth = 0;改成calculateEffect(toggleOn?1:0);
Could not find com.android.supportappcompat-v723.0.3
遇到的问题将整个AS项目拷到另一个电脑的时候,出现了这个问题,提示app:unspecified请去下载android support Respository,打开后SDK Manager更新到最新了还是不行
解决办法将项目clean一下,AS会列出一堆目录,他在这些目录里面找appcompat-v7:23.0.3找到其中的一个目录,比如C:\develop_software\android-studio-sdk\extras\android\m2repository\com\android\support\appcompat-v7在这里面找23.0.3,发现并没有···那么看看有什么,有23.3.0,那么在build.gradle改成23.3.0,然后clean,rebuild即可
notifyDatasetChanged无效的解决办法
出现问题比如这样给适配器传一个集合
1234List datas;datas = DBDao.selectMyClock(); //此句是返回一个ListclocksAdapter = new AlarmClockListAdapter(getContext(), datas);myClocks.setAdapter(clocksAdapter);
数据库刷新了,然后想这样刷新数据
1234private void refresh() { datas = DBDao.selectMyClock(); clocksAdapter.notifyDataSetChanged();}
是无效的,因为datas指向了两个对象
解决办法:清空集合,再将新的数据添加进去即可
12345public void refresh() { datas.clear(); datas.addAll(DBDao.selectMyClock()); clocksAdapter.notifyDataSetChanged();}