bug

来源:互联网 发布:js 构造对象的方式 编辑:程序博客网 时间:2024/04/29 23:41

快速点击启动两个相同的activity

  • 用singleTop启动模式

真机测试log.i不显示

  • 手机可能禁止了log日志的输出,例如华为,小米

全局捕获异常

  • 有些异常不在log里面输出,程序直接崩溃,加上之后可以看异常信息

原理: 线程池在执行任务时捕获了所有异常,这样一来线程中所有的异常都无法捕获到抛出的异常。 即 try catch 捕获不到异常了。

jni

  • jni:目录和 aidl一样,同样是naitive方法的报名完全一致才行

listview recycleview 的条目布局

一般用相对布局,线性布局可能有问题,如显示不全 颜色不对

ListView中notifyDataSetChanged()刷新数据不更新解决方法:

      //usersList= query(......);            usersList.clear();                     usersList.addAll(query(......));                  sAdapter.notifyDataSetChanged();

googlePlay

  • 线程池管理里面 if else 结构: 和 if 结构 本来没有else,也就是不管条件满不满足都执行后面的代码,结果后面的代码写到else里面了,结果就不执行了…

重要知识点

ANR (application not response)应用程序无响应

解决应用程序无响应的方法,耗时的操作不要写在主线程。
1. 网络访问:要开启子线程执行。 handler+message
2. 耗时的操作:比如大文件的读写 , 要开启子线程。 handler+message
3. 多媒体播放:如果是视频文件或者网络文件资源 , 不要使用mediaPlayer.prepare();
使用 prepareAsync()异步准备。开启子线程去准备,不会阻塞主线程。

易犯错误

  • 复制布局文件后修改时,确定是在新的文件中修改的,别把老文件改了….

奇怪的错误

  • 报错定位到一行完全正确的语句:项目->clean一下再试试
byte[] b = new byte[1024];while((len=is.read())!=-1){//每次读取流中的数据之后同步把数据写入临时文件raf.write(b,0,len);
  • 上面的错误在于is.read();没有把b传入; is.read(b);

  • 如果onBind()没有返回中间人对象,这个方法是不会调用的

    @Override        public void onServiceConnected(ComponentName name, IBinder service) {            // 把中间人对象强转PublicBusiness;调用Stub的方法转            pb = Stub.asInterface(service);                   }

adapter 中的findViewById要用创建的view调用

View view = View.inflate(HomeActivity.this, R.layout.home_list_item, null);ImageView ivItem = (ImageView) view.findViewById(R.id.iv_item);//view.findViewById
  • 导包冲突(如果已经导入了OnClickListener包,这里就要写全称.
    dialog.setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                // TODO Auto-generated method stub            }        });
0 0