在安装这个软件的时候弹出了这个对话框怎么解决?

  很多小伙伴家里的电脑都是win10系统,在使用win10系统下载各种各样的软件的时候,在安装的时候弹出对话框"你要允许此应用对你的电脑进行更改吗",下面小编就教大家win10安装软件弹出的那个对话框怎么关掉。

  方法一、安装后的设置方法

  1、当安装软件弹出提示框后,找到提示框下方的“更改这些通知的出现时间”;

  2、进入后,鼠标点击“从不通知”上方位置,将蓝色按钮修改后点击确定即可。

  方法二、安装前的设置方法

  1、首先回到win10系统桌面,鼠标右键单击“此电脑”,选择“属性”;

  2、进入弹窗,鼠标单击左下角“安全和维护”选项,如下图所示;

  3、左侧列表找到“更改用户账户控制设置”选项,单击进入;

  4、打开弹窗,按照上面同样的方法,将蓝色按钮修改到最后一格,单击“确定”即可。

  以上就是win10安装软件弹出的那个对话框怎么关掉,希望能帮助到大家。

当前位置: > > Win10打开软件时老是弹出提示窗口

  打开软件的时候总会弹出一个窗口,上面写着“Windows已保护你的电脑”。不知道的还以为电脑出了什么问题。每次都要关掉窗口才能打开程序,让人觉得麻烦。那么Win10打开软件时老是弹出提示窗口怎么取消掉呢?

  1、按WIN+X 或右击开始菜单,然后打开旧;

  2、点击“系统和安全”选项;

  3、接着再点击“安全性与维护”选项;

  4、这时点击左侧的“更改Windows smartscreen筛选器设置 ”选项;

  5、将smartscreen筛选器设置为“不执行任何操作(关闭 Windows smartscreen筛选器)“并确定保存设置;

  经过上面五个步骤的设置Win10打开软件时弹出的提示窗口就不会再出现了,而且取消这个弹出窗口对系统不会有任何影响。

1、什么是ANR 如何避免它?

如果开发机器上出现问题,我们可以通过查看/data/anr/traces.txt即可,最新的ANR信息在最开始部分。

  • 主线程存在耗时操作,被阻塞
  • 应用在5秒内未响应用户的输入事件(如按键或者触摸)
  • Service在特定的时间内无法处理完成 20秒

3、横竖屏切换时候Activity的生命周期

  1. 不设置Activity的android:configChanges时,切屏会重新回调各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。

当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。

6、android中进程的优先级?

    即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最晚被杀死的 可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失了焦点而不能与用户交互 其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户关心的,例如用户正在非音乐界面听的音乐或者正在非下载页面下载的文件等;当系统要空间运行,前两者进程才会被终止 其中运行着执行onStop方法而停止的程序,但是却不是用户当前关心的,例如后台挂着的QQ,这时的进程系统一旦没了有内存就首先被杀死 不包含任何应用程序的进程,这样的进程系统是一般不会让他存在的

因为bundle传递数据时只支持基本数据类型,所以在传递对象时需要序列化转换成可存储或可传输的本质状态(字节流)。

序列化后的对象可以在网络、IPC(比如启动另一个进程的Activity、Service和Reciver)之间进行传输,也可以存储到本地。

是在xml中定义好一系列图片之后,使用AnimatonDrawable来播放的动画。

可以实现平移、旋转、放缩、渐变等功能,但是动画执行完后,焦点还是在原来的位置,控件的属性未真的改变

比补件动画功能强大,可以定义出各式各样的动画,并且支持对控件的属性进行改变,动画的特征是在一定的时间内不断修改对象属性值的机制,所以不会影响动画执行后所在位置的正常使用

  1. 首先制定目标对象的开始、结束、持续时间。
  2. 调用TimeInterpolator计算插值分数,调用TypeEvaluator去计算运动中的属性值。设置动画操作的属性值

插值器:属性变化的百分比
估值器:属性变化的数值

其实就是利用插值器和估值器,来计出各个时刻View的属性,然后通过改变View的属性来实现View的动画效果。

  1. 在Application和Service中去layout inflate是合法的,但是会使用系统默认的主题样式,自定义样式可能不会被使用。
  • 夜间主题,适配:在主题背景中设置可自动适配。
  • Live Caption,此功能将自动向视频、播客和音频消息添加说明文字。
  • 分区存储,针对外部存储做的改变,

  • 共享的媒体文件,必须使用MediaStore访问
  • 其他文件则要通过存储访问框架进行访问
    • 引入后台访问位置权限(授予粗或精确位置使用权限的同时。如果没有在清单文件中定义该权限,那么仅有前台有访问权。如果定义了,那么前后台都可以有访问权)
    • 一些电话、蓝牙和WLAN的API需要精确位置权限
  • 后台启动activity限制,应用处于后台时,无法启动activity

    • 因为此项行为变更适用于在 Android 10 上运行的所有应用,所以这一限制导致最明显的问题就是点击推送信息时,有些应用无法进行正常的跳转(具体的实现问题导致)。所以针对这类问题,可以采取PendingIntent的方式,发送通知时使用setContentIntent方法。
  • 限制了对剪切板数据的访问权限

JSON是存储和交换文本信息的语法,类似XML,但是比XML更小、更快,更易解析 JSON是轻量级的文本数据交换格式,独立于语言,具有可描述性,更易理解,对象可以包含多个名称/值对

使用谷歌的GSON包进行解析

  • 语义性较差,不如 xml 直观

Jar包里面只有代码,aar里面不光有代码还包括资源文件,比如 drawable 文件,xml资源文件。对于一些不常变动的 Android Library,我们可以直接引用 aar,加快编译速度。

14、Android为每个应用程序分配的内存大小是多少

android程序内存一般限制在16M,也有的是24M。近几年手机发展较快,一般都会分配两百兆左右,和具体机型有关。

进行跨进程通信,实现进程间的数据交互和共享。通过Context 中 getContentResolver() 获得实例,通过 Uri匹配进行数据的增删改查。ContentProvider使用表的形式来组织数据,无论数据的来源是什么,ConentProvider 都会认为是一种表,然后把数据组织成表格。

    UI线程中执行,一个任务实例只允许执行一次,执行多次抛出异常,用于网络请求或者简单数据处理。 不会重新创建新的服务和新的线程,只是把消息加入消息队列中等待执行,而如果服务停止,会清除消息队列中的消息,后续的事件得不到执行。)
  • Merge: 可以删除多余的层级,降低UI布局的嵌套层次。
  • ViewStub: 按需加载,减少内存使用量、加快渲染速度、不支持 merge 标签。(原理:当手动调用inflate()或者设置visible(实际上也是调用inflate函数),会将ViewStub从父控件移除,并加装目标控件,然后将目标控件添加到ViewStub父控件中去,这就完成了视图动态替换,也就是延迟加载功能)

1.在我们取得Dialog对象后,需给它设置类型,即:

assets:不会在 R 文件中生成相应标记,存放到这里的资源在打包时会打包到程序安装包中。(通过 AssetManager 类访问这些文件)
res:会在 R 文件中生成 id 标记,资源在打包时如果使用到则打包到安装包中,未用到不会打入安装包中。
res/raw:和 asset 下文件一样,打包时直接打入程序安装包中(会映射到 R 文件中)。

把页面显示的 View 细分一下,放在 AsyncTask 里逐步显示,用 Handler 更好。这样用户的看到的就是有层次有步骤的一个个的 View 的展示,不会是先看到一个黑屏,然后一下显示所有 View。最好做成动画,效果更自然。
利用多线程的目的就是尽可能的减少 onCreate() 和 onReume() 的时间,使得用户能尽快看到页面,操作页面。

Android消息循环流程图如下所示:

主要涉及的角色如下所示:

  • MessageQueue:消息队列,负责消息的存储与管理,负责管理由 Handler 发送过来的 Message。读取会自动删除消息,单链表维护,插入和删除上有优势。在其next()方法中会无限循环,不断判断是否有消息,有就返回这条消息并移除。
  • Looper:消息循环器,负责关联线程以及消息的分发,在该线程下从 MessageQueue获取 Message,分发给Handler,Looper创建的时候会创建一个
  • Handler:消息处理器,负责发送并处理消息,面向开发者,提供 API,并隐藏背后实现的细节。

整个消息的循环流程还是比较清晰的,具体说来:

事实上,在整个消息循环的流程中,并不只有Java层参与,很多重要的工作都是在C++层来完成的。我们来看下这些类的调用关系。

注:虚线表示关联关系,实线表示调用关系。

在这些类中MessageQueue是Java层与C++层维系的桥梁,MessageQueue与Looper相关功能都通过MessageQueue的Native方法来完成,而其他虚线连接的类只有关联关系,并没有直接调用的关系,它们发生关联的桥梁是MessageQueue。

Handler 引起的内存泄露原因以及最佳解决方案
为什么我们能在主线程直接使用 Handler,而不需要创建 Looper ?
主线程的 Looper 不允许退出

主线程不允许退出,退出就意味 APP 要挂。

因为Message内部维护了1个Message池,用于Message消息对象的复用,使用obtain()则是直接从池内获取,避免内存new Message重新分配内存。

为了节省开销,Android 给 Message 设计了回收机制,所以我们在使用的时候尽量复用 Message ,减少内存消耗:

子线程里弹 Toast 的正确姿势

本质上是因为 Toast 的实现依赖于 Handler,按子线程使用 Handler 的要求修改即可,同理的还有 Dialog。

  • 利用 Looper 判断当前线程是否是主线程。
主线程的死循环一直运行是不是特别消耗CPU资源呢?

并不是,这里就涉及到Linux pipe/epoll机制,简单说就是在主线程的MessageQueue没有消息时,便阻塞在loop的queue.next()中的nativePollOnce()方法里,此时主线程会释放CPU资源进入休眠状态,直到下个消息到达或者有事务发生,通过往pipe管道写端写入数据来唤醒主线程工作。这里采用的epoll机制,是一种IO多路复用机制,可以同时监控多个描述符,当某个描述符就绪(读或写就绪),则立刻通知相应程序进行读或写操作,本质是同步I/O,即读写是阻塞的。所以说,主线程大多数时候都是处于休眠状态,并不会消耗大量CPU资源。

如何保证在msg.postDelay情况下保证消息次序?

24、程序A能否接收到程序B的广播?
能,使用全局的BroadCastRecevier能进行跨进程通信,但是注意它只能被动接收广播。此外,LocalBroadCastRecevier只限于本进程的广播间通信。

25、数据加载更多涉及到分页,你是怎么实现的?
分页加载就是一页一页加载数据,当滑动到底部、没有更多数据加载的时候,我们可以手动调用接口,重新刷新RecyclerView。

28、线程池的相关知识。
只有核心线程,并且数量固定的,也不会被回收,所有线程都活动时,因为队列没有限制大小,新任务会等待执行.
优点:更快的响应外界请求.
只有一个核心线程,确保所有的任务都在同一线程中按序完成.因此不需要处理线程同步的问题.
只有非核心线程,最大线程数非常大,所有线程都活动时会为新任务创建新线程,否则会利用空闲线程(60s空闲时间,过了就会被回收,所以线程池中有0个线程的可能)处理任务.
优点:任何任务都会被立即执行(任务队列SynchronousQuue相当于一个空集合);比较适合执行大量的耗时较少的任务.
核心线程数固定,非核心线程(闲着没活干会被立即回收数)没有限制.
优点:执行定时任务以及有固定周期的重复任务

29、内存泄露,怎样查找,怎么产生的内存泄露?

30、类的初始化顺序依次是?

(静态变量、静态代码块)>(变量、代码块)>构造方法

json是一种轻量级的数据交换格式,
json简单说就是对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在json中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

32、ViewPager使用细节,如何设置成每次只初始化当前的Fragment,其他的不初始化(提示:Fragment懒加载)?

我们经常在使用fragment时,常常会结合着viewpager使用,那么我们就会遇到一个问题,就是初始化fragment的时候,会连同我们写的网络请求一起执行,这样非常消耗性能,最理想的方式是,只有用户点开或滑动到当前fragment时,才进行请求网络的操作。因此,我们就产生了懒加载这样一个说法。

Viewpager配合fragment使用,默认加载前两个fragment。很容易造成网络丢包、阻塞等问题。

可以肯定的是,两者都是支持序列化和反序列化的操作。
两者最大的区别在于 存储媒介的不同,Serializable 使用 I/O 读写存储在硬盘上,而 Parcelable 是直接 在内存中读写。很明显,内存的读写速度通常大于 IO 读写,所以在 Android 中传递数据优先选择 Parcelable。

37、Bitmap 使用时候注意什么?
1、要选择合适的图片规格(bitmap类型):

3、复用内存。即,通过软引用(内存不够的时候才会回收掉),复用内存块,不需要再重新给这个bitmap申请一块新的内存,避免了一次内存的分配和回收,从而改善了运行效率。
4、使用recycle()方法及时回收内存。

39、多进程场景遇见过么?
1、在新的进程中,启动前台Service,播放音乐。
2、一个成熟的应用一定是多模块化的。首先多进程开发能为应用解决了OOM问题,因为Android对内存的限制是针对于进程的,所以,当我们需要加载大图之类的操作,可以在新的进程中去执行,避免主进程OOM。而且假如图片浏览进程打开了一个过大的图片,java heap 申请内存失败,该进程崩溃并不影响我主进程的使用。

save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。
restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。
save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。save和restore操作执行的时机不同,就能造成绘制的图形不同。

44、强引用置为null,会不会被回收?
不会立即释放对象占用的内存。 如果对象的引用被置为null,只是断开了当前线程栈帧中对该对象的引用关系,而 垃圾收集器是运行在后台的线程,只有当用户线程运行到安全点(safe point)或者安全区域才会扫描对象引用关系,扫描到对象没有被引用则会标记对象,这时候仍然不会立即释放该对象内存,因为有些对象是可恢复的(在 finalize方法中恢复引用 )。只有确定了对象无法恢复引用的时候才会清除对象内存。

45、Bundle传递数据为什么需要序列化?
序列化,表示将一个对象转换成可存储或可传输的状态。序列化的原因基本三种情况:

1.永久性保存对象,保存对象的字节序列到本地文件中;

2.对象在网络中传递;

3.对象在IPC间传递。

46、广播传输的数据是否有限制,是多少,为什么要限制?
Intent在传递数据时是有大小限制的,大约限制在1MB之内,你用Intent传递数据,实际上走的是跨进程通信(IPC),跨进程通信需要把数据从内核copy到进程中,每一个进程有一个接收内核数据的缓冲区,默认是1M;如果一次传递的数据超过限制,就会出现异常。
不同厂商表现不一样有可能是厂商修改了此限制的大小,也可能同样的对象在不同的机器上大小不一样。
传递大数据,不应该用Intent;考虑使用ContentProvider或者直接匿名共享内存。简单情况下可以考虑分段传输。
47、是否了解硬件加速?
硬件加速就是运用GPU优秀的运算能力来加快渲染的速度,而通常的基于软件的绘制渲染模式是完全利用CPU来完成渲染。
1.硬件加速是从API 11引入,API 14之后才默认开启。对于标准的绘制操作和控件都是支持的,但是对于自定义View的时候或者一些特殊的绘制函数就需要考虑是否需要关闭硬件加速。
2.我们面对不支持硬件加速的情况,就需要限制硬件加速,这个兼容性的问题是因为硬件加速是把View的绘制函数转化为使用OpenGL的函数来进完成实际的绘制的,那么必然会存在OpenGL中不支持原始回执函数的情况,对于这些绘制函数,就会失效。
3.硬件加速的消耗问题,因为是使用OpenGL,需要把系统中OpenGL加载到内存中,OpenGL API调用就会占用8MB,而实际上会占用更多内存,并且使用了硬件必然增加耗电量了。
4.硬件加速的优势还有display list的设计,使用这个我们不需要每次重绘都执行大量的代码,基于软件的绘制模式会重绘脏区域内的所有控件,而display只会更新列表,然后绘制列表内的控件。

CPU更擅长复杂逻辑控制,而GPU得益于大量ALU和并行结构设计,更擅长数学运算。

48、ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制)。

在Activity中被创建:该Thread的就是为这个Activity服务的,完成这个特定的Activity交代的任务,主动通知该Activity一些消息和事件,Activity销毁后,该Thread也没有存活的意义了。
在Service中被创建:这是保证最长生命周期的Thread的唯一方式,只要整个Service不退出,Thread就可以一直在后台执行,一般在Service的onCreate()中创建,在onDestroy()中销毁。所以,在Service中创建的Thread,适合长期执行一些独立于APP的后台任务,比较常见的就是:在Service中保持与服务器端的长连接。

我要回帖

更多关于 为什么进入软件会被弹出来 的文章

 

随机推荐