问题1 studio问题
E/dalvikvm: Could not find class
解决办法1 http://blog.csdn.net/mark_sssss/article/details/51286596
File - Settings -Build,Execution,Deployment - Instant Run,去掉EnableInstant Run...边上的钩,点击OK即可。 强制忽略
问题是由于在Android构建工具的版本和Android支持库的不同版
更新您的构建工具的版本和支持库的版本到最新的或者你应该使用一个appcompat图书馆低于编译工具版本
问题2 Glide问题
java.lang.IllegalArgumentException:You cannot start a load for a destroyed activity
主要是Glide 参数的问题,
解决办法:Context 用getApplicationContext()可解决. 不要在子线程中使用.
https://github.com/bumptech/glide/issues/138
问题3 EventBus问题
org.greenrobot.eventbus. Exception: tssuper classes have no public methods with the @Subscribe annotation
添加@Subscribe 在回调方法上, studio必须添加, eclipse 可以不添加
问题4, EventBus问题
tabhost 上的fragment注册eventbus 在onstart 中 注册, 不能早onCreateview中注册, 因为tabhost 上的页面, 生命周期 只走一次. 注销在onstop 里
问题 5 Caused by: java.lang.UnsupportedOperationException: Can't convert todimension: type=0x1
对于的dimens没有. 解决办法, 默认的要有值values 下要有默认的dimens
问题6: listview 和gridview 获取条目调用Getchat(角标)出现空指针
setAdapter()其实是异步的 ,调用了这个方法, ListView或者gridview的 item并没有立马创建,而是在下一轮消息处理时才创建。弄明白了这个,就有了前面代码中的解决办法:使用 post()提交一个 Runnable()对象,在 Runnable()内部来做默认选中这种初始化动作。
问题7 FragmentTabHost切换Fragment时避免重复加载UI
不进行缓存那么. 重新进来UI页面将一直重复加载
使用FragmentTabHost时,Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态。
解决办法:在Fragment onCreateView方法中缓存View
1. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
2. if(rootView==null){
3. rootView=inflater.inflate(R.layout.tab_fragment, null);
4. }
5. //缓存的rootView需要判断是否已经被加过parent, 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
6. ViewGroup parent = (ViewGroup) rootView.getParent();
7. if (parent != null) {
8. parent.removeView(rootView);
9. }
10. return rootView;
11. }
问题8: mainactivy 后台进程的时候内容不能保存,
解决办法 设置启动模式android:launchMode="singleInstance"
06-08 12:01:22.204 27808-27808/? E/MainActivity: onRestart:
06-08 12:01:22.208 27808-27808/? E/MainActivity: onStart:
06-08 12:01:22.208 27808-27808/? E/MainActivity: onResume:
问题9: frgment 用show 和hide来保存状态, 所有的生命周期, 只走一次,
解决办法 onHiddenChanged 来判断当前状态 是显示还是隐藏
问题10: 不要在onResume ,onStrart 中去做一些操作频繁的事情, 比如New 出某个东西
问题11 Error:(7,23) 错误:程序包org.apache.http不存在
Error:(8, 36) 错误:程序包org.apache.http.client.utils不存在
Error:(76, 52) 错误:找不到符号
符号: 类NameValuePair
位置: 类NetworkRequest
Error:(78, 22) 错误:找不到符号
符号: 变量URLEncodedUtils
位置: 类NetworkRequest
解决此错误方法:
在build.gradle(Module:app)下加
useLibrary 'org.apache.http.legacy'
问题12 :接入网易云信 出现的问题 ExceptionInInitializerError // 注册云信网络通话来电
问题12 :接入网易云信 出现的问题 ExceptionInInitializerError // 注册云信网络通话来电
要进行判断运行是否是在主线程方法中
public boolean inMainProcess() { String packageName = getPackageName(); String processName = SystemUtil.getProcessName(this); return packageName.equals(processName); }
13 Context 引起 的内存泄漏 使用BaseApplication 生命周期最长,
14 静态类内存泄漏
一个activity类用静态初始化. 那么在onDestroy中 要设置成null,
public static MainActivity activity=null; // 创建实例化, @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); activity=this;
}
@Override protected void onDestroy() { super.onDestroy(); activity=null;
15 现象描述:
首次通过下载apk安装的应用,初次运行后按home键退出,再次点击图标,结果app会重启(而不是直接显示刚才关闭时的页面);
通过开发工具eclipse直接运行的工程,却不会如此。而是跟期待的那样—点击图标直接进入刚才显示的页面。
直接上解决办法:
在工程的启动Activity中(如:SplashActivity中)的onCreate方法中加入一下代码即可:
if(!this.isTaskRoot()) {
System.out.println("Splash_Activity Not isTaskRoot");
finish();
return;
}