如何添加网站后台,国内顶尖工业设计公司,百度收录申请,做视频最全的网站前台就是和用户交互的进程 可见进程例如一个activity被一个透明的对话框覆盖#xff0c;该activity就是可见进程 服务#xff1a;service进程 后台一个activity按了home按键就是从前台退回到后台 标准模式#xff1a;不管任务栈是否存在相同的activity都会创建一个新的activ… 前台就是和用户交互的进程 可见进程例如一个activity被一个透明的对话框覆盖该activity就是可见进程 服务service进程 后台一个activity按了home按键就是从前台退回到后台 标准模式不管任务栈是否存在相同的activity都会创建一个新的activity存储在任务栈中 Singletop栈顶复用模式创建的activity在栈顶就不用创建该activity 站内复用模式只要任务栈内存在该activity就不用创建该activity将该activity置于栈顶该activity以上的activity都从任务栈中移除销毁掉出去会回调onnewIntent方法 最近由于工作需要使用Scheme方式自定义URL来跨应用间调用踩了一些坑现在记录一下。 1、Scheme方式配置 manifest中配置能接受Scheme方式启动的activity 最近由于工作需要使用Scheme方式自定义URL来跨应用间调用踩了一些坑现在记录一下。 1、Scheme方式配置 manifest中配置能接受Scheme方式启动的activity 如果需要配置能被js调起一定要配置下面这句 category android:nameandroid.intent.category.BROWSABLE/category android:schemeapp表示配置接受的协议为app相当于http://www.baidu.com中的http或者https android:hosttest表示配置接受的域名为test相当于http://www.baidu.com中的www.baidu.com 2、使用URL调起ActivityUri uriUri.parse(app://test); Intent intentnew Intent(Intent.ACTION_VIEW,uri); startActivity(intent); 3、使用js调起Activitywindow.location app://test; 通过推送接受到需要打开的url 前者适合页面较少并没有实现真正的内存回收后者适合页面较多实现了内存真正的回收 fragment调用activity的方法直接获得getactivity进行调用 activity调用fragement的方法在fragment中实现接口在activity中调用接口对象 fragment A调用fragment B的方法通过getactivity的的findFragment进行调用 service和broadcast都是运行在主线程上如果service要做耗时操作可以开启线程的方式列如在service中访问网络都需要开启线程 Service 中的onStartCommand()必须返回一个整数这个整数描述了在系统杀死它的事件中系统如何继续这个服务onStartCommand()也返回值必须是下面常量之一 START_NOT_STICKY 如果系统在onStartCommand()返回后杀死了服务不要重新创建这个service除非还有挂起的intent需要被传送这是避免在不必要时运行你的service和当你的应用可以简单重启任何未竟的工作时的最佳选择 START_STICKY 如果系统在onStartCommand()返回后杀死了这个service会重新创建这个service并且调用onStartCommand()但是不再重新发送上次最后一个intent而是使用一个nullintent调用onStartCommand()除非有一些挂起的intent在此情况下这些挂起的intent被派送这适合于媒体播放器(or或相似也的服务)它不执行命令但是无限期的运行并等待一个工作 START_REDELIVER_INTENT 如果系统在onStartCommand()返回后杀死了service重新创建这个service并且使用上次最后一个intent调用onStartCommand()任何挂起的intent都顺序地被派送这适合于活跃地执行一个工作并且应被立即恢复的服务比如下载一个文件 在service中发送广播通知activity不让service和activity直接交互 同一一个app不同组件的通信 动态注册一定要在activity的ondestory中销毁否则会内存泄露 动态注册的声明周期和activity一样activity销毁广播就销毁 静态注册即使activity销毁了也能收到广播 binder比传统的进程的上面更加高效binder能够进行身份的安全性检查 在生成handle对象的时候每一个线程拥有自己的创建了threadLocal对象一个loop对象和一个消息队列主线程才能更新UIhandler的创建必须在主线程中looper从消息队列中获得消息然后由handle来发送有handle的 hanleMessage方法来处理处理完成之后返回给Loper继续执行在取出消息队列 解决handle内存泄露的问题 第一讲handle定义成static类型 第二在activity的ondestory中调用handle.removecall方法 第三采用弱引用的访问在handle内部持有activity的对象 通过上面的三种方式能百分之90%解决handle的内存泄露 总结 View绘制分三个步骤顺序是onMeasureonLayoutonDraw。经代码亲测log输出显示调用invalidate方法只会执行onDraw方法调用requestLayout方法只会执行onMeasure方法和onLayout方法并不会执行onDraw方法。 所以当我们进行View更新时若仅View的显示内容发生改变且新显示内容不影响View的大小、位置则只需调用invalidate方法若View宽高、位置发生改变且显示内容不变只需调用requestLayout方法若两者均发生改变则需调用两者按照View的绘制流程推荐先调用requestLayout方法再调用invalidate方法。 相关知识点 1.invalidate和postInvalidateinvalidate方法只能用于UI线程中在非UI线程中可直接使用postInvalidate方法这样就省去使用handler的烦恼。 转载于:https://www.cnblogs.com/kebibuluan/p/7205704.html