当前位置: 首页 > news >正文

怎么知道哪家公司网站做的好重庆网站seo技术

怎么知道哪家公司网站做的好,重庆网站seo技术,商机互联做网站怎么样,郑州做网站狼牙一. 基础知识介绍 1. WakeLock(休眠锁) WakeLock用于保持设备的唤醒状态,有些情况下,即时用户不操作App,我们也需要保持屏幕处于唤醒状态,以保证用户体验,比如视频类APP和计步类APP,…

一. 基础知识介绍

 1. WakeLock(休眠锁)

WakeLock用于保持设备的唤醒状态,有些情况下,即时用户不操作App,我们也需要保持屏幕处于唤醒状态,以保证用户体验,比如视频类APP和计步类APP,视频类APP需要屏幕一直保持常量,计步类APP要求熄屏后程序依然保持运行状态。

2. WakeLock的多种类型:

PARTIAL_WAKE_LOCK:保持CPU正常运转,但屏幕和键盘灯都可能是关闭的。
SCREEN_DIM_WAKE_LOCK:保持CPU正常运转,允许屏幕点亮但可能屏幕被置灰,键盘灯可能是关闭的。
SCREEN_BRIGHT_WAKE_LOCK:保持CPU正常运转,允许屏幕高亮显示,键盘灯可能是关闭的。
FULL_WAKE_LOCK:保持CPU正常运转,保持屏幕高亮显示,键盘灯也保持亮度。
ACQUIRE_CAUSES_WAKEUP:强制屏幕和键盘灯亮起,这种锁针对一些必须通知用户的操作。
ON_AFTER_RELEASE:当WakeLock被释放后,继续保持屏幕和键盘灯亮起一段时间。

二. 遇到不灭屏的解决方法

1. 方法一

   使用adb shell dumpsys >dumpsys.txt
   或者在bugreport.zip
   或者使用命令: adb shell dumpsys power > power_dump.txt

   搜索关键字:Wake Locks: 查看对应的持有对象。

实例分析:

1. 案例一

   复现场景:

   [settings]settings->display->screen timeout-设置15秒,15秒后手机不灭屏.(低概率)

(1) 查看dump power的信息:

Wake Locks: size=1 FULL_WAKE_LOCK 'TinnoFactory' ACQUIRE_CAUSES_WAKEUP ACQ=-55m1s400ms (uid=1000 pid=16340)

(2) 发现有持有'TinnoFactory'  TAG的 wake lock (FULL_WAKE_LOCK)导致不能灭屏。

(3) 查看代码:

    private static final String TAG = "TinnoFactory"; 
   /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "<TinnoFactoryActivity> onCreate");

        PowerManager pm =(PowerManager) getSystemService(POWER_SERVICE); 
            wakeLock= pm.newWakeLock(PowerManager.FULL_WAKE_LOCK| PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
            wakeLock.acquire();

    @Override
    public void onDestroy() {
        Log.d(TAG, "<TinnoFactoryActivity> onDestroy");
//        Log.i(TAG, "onDestroy, reset previousMobileDataState");
//        setMobileDataState(mPreviousMobileDataState);
//        Log.i(TAG, "setMobileData, getMobileDataState = " + getMobileDataState());
        if (wakeLock != null) {wakeLock.release();}
        super.onDestroy();
    }

(4)  这个应用退出来就可以恢复。

2. 案例二

 复现场景:

将timeout 时间设置为15秒。在打电话界面停留超过15秒,手机不灭屏。

(1) 查看dump power的信息: 

 SCREEN_BRIGHT_WAKE_LOCK        'WindowManager' ON_AFTER_RELEASE ACQ=-1m56s271ms (uid=1000 pid=1344 ws=WorkSource{10172})

 (2) 发现有持有'WindowManager'  TAG,是来自uid: 10172, 通过日志发现10172是dialer应用。

 (3) 分析'WindowManager'  TAG,怎么持有wake lock。

  使用倒序的方法找:

 1) TAG 定义:  

TAG_WM 定义:

frameworks/base/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java

public class WindowManagerDebugConfig {
...
    static final String TAG_WM = "WindowManager";
..

 2)  调用newWakeLock SCREEN_BRIGHT_WAKE_LOCK的地方:

frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java

    private WindowManagerService(Context context, InputManagerService inputManager,
            boolean showBootMsgs, boolean onlyCore, WindowManagerPolicy policy,
            ActivityTaskManagerService atm, DisplayWindowSettingsProvider
            displayWindowSettingsProvider, Supplier<SurfaceControl.Transaction> transactionFactory,
            Supplier<Surface> surfaceFactory,
            Function<SurfaceSession, SurfaceControl.Builder> surfaceControlFactory) {
...
        mHoldingScreenWakeLock = mPowerManager.newWakeLock(
                PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG_WM);

...
}

 3)谁在使用mHoldingScreenWakeLock.

只要newHoldScreen不为null,若调用setHoldScreenLocked,则就会调用acquire函数.

    void setHoldScreenLocked(final Session newHoldScreen) {
        final boolean hold = newHoldScreen != null;
...
        if (hold != state) {
            if (hold) {
                mHoldingScreenWakeLock.acquire();
                mPolicy.keepScreenOnStartedLw();
            }

..

 4) 接下来寻找是调用setHoldScreenLocked 函数

   发现只有一处,是在RootWindowContainer.java 中。

frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java
 

    // "Something has changed!  Let's make it correct now."
    // TODO: Super long method that should be broken down...
    void performSurfacePlacementNoTrace() {
...
        mWmService.setHoldScreenLocked(mHoldScreen);

..

5) 查看是谁给mHoldScreen赋值。

也是只有一处,当设置flag是FLAG_KEEP_SCREEN_ON。

android/frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java 


    /**
     * @param w        WindowState this method is applied to.
     * @param obscured True if there is a window on top of this obscuring the display.
     * @param syswin   System window?
     * @return True when the display contains content to show the user. When false, the display
     * manager may choose to mirror or blank the display.
     */
    boolean handleNotObscuredLocked(WindowState w, boolean obscured, boolean syswin) {
        if (w.mHasSurface && canBeSeen) {
            if ((attrFlags & FLAG_KEEP_SCREEN_ON) != 0) {
                mHoldScreen = w.mSession;
                mHoldScreenWindow = w;
            } 

(4) 在dialer 中查看是谁使用了FLAG_KEEP_SCREEN_ON 。

   果真有有相应的代码,进行debug调试既可.

vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/incallui/InCallPresenter.java

  private void applyScreenTimeout() {

    if (screenTimeoutEnabled) {
      window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    } else {
      window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
  }


文章转载自:
http://reenactment.xqwq.cn
http://mimetic.xqwq.cn
http://cashew.xqwq.cn
http://wooer.xqwq.cn
http://pigeonite.xqwq.cn
http://dichromaticism.xqwq.cn
http://ketch.xqwq.cn
http://pragmatical.xqwq.cn
http://pentameter.xqwq.cn
http://theogony.xqwq.cn
http://multicentre.xqwq.cn
http://nocturne.xqwq.cn
http://popularize.xqwq.cn
http://harquebuss.xqwq.cn
http://allomerism.xqwq.cn
http://ulama.xqwq.cn
http://viticultural.xqwq.cn
http://chlamydate.xqwq.cn
http://decency.xqwq.cn
http://lottery.xqwq.cn
http://powdered.xqwq.cn
http://seminatural.xqwq.cn
http://baddy.xqwq.cn
http://endpaper.xqwq.cn
http://packing.xqwq.cn
http://evermore.xqwq.cn
http://discerning.xqwq.cn
http://besmirch.xqwq.cn
http://nothingarian.xqwq.cn
http://ungrammatic.xqwq.cn
http://mount.xqwq.cn
http://electrode.xqwq.cn
http://seafox.xqwq.cn
http://palace.xqwq.cn
http://silicomanganese.xqwq.cn
http://hypergeusesthesia.xqwq.cn
http://visna.xqwq.cn
http://splosh.xqwq.cn
http://borazon.xqwq.cn
http://marasmus.xqwq.cn
http://checkerman.xqwq.cn
http://excubitorium.xqwq.cn
http://overboot.xqwq.cn
http://cyke.xqwq.cn
http://piggyback.xqwq.cn
http://shuffle.xqwq.cn
http://negativist.xqwq.cn
http://sextette.xqwq.cn
http://ohmmeter.xqwq.cn
http://parturifacient.xqwq.cn
http://lemmatize.xqwq.cn
http://following.xqwq.cn
http://fifie.xqwq.cn
http://nunciature.xqwq.cn
http://vehicular.xqwq.cn
http://receival.xqwq.cn
http://hokypoky.xqwq.cn
http://mesmerization.xqwq.cn
http://reign.xqwq.cn
http://borofluoride.xqwq.cn
http://mobilisation.xqwq.cn
http://artlessly.xqwq.cn
http://jesuitize.xqwq.cn
http://manticore.xqwq.cn
http://quarantinable.xqwq.cn
http://avestan.xqwq.cn
http://lucubrate.xqwq.cn
http://anemone.xqwq.cn
http://trapdoor.xqwq.cn
http://uprise.xqwq.cn
http://renter.xqwq.cn
http://damaged.xqwq.cn
http://navigation.xqwq.cn
http://susceptive.xqwq.cn
http://ebulliency.xqwq.cn
http://transgression.xqwq.cn
http://urbanity.xqwq.cn
http://reboant.xqwq.cn
http://leg.xqwq.cn
http://teno.xqwq.cn
http://pardon.xqwq.cn
http://affixation.xqwq.cn
http://flunkyism.xqwq.cn
http://triplicity.xqwq.cn
http://gangway.xqwq.cn
http://hydrastinine.xqwq.cn
http://arithmetize.xqwq.cn
http://premonish.xqwq.cn
http://diminished.xqwq.cn
http://towaway.xqwq.cn
http://endopolyploid.xqwq.cn
http://tabu.xqwq.cn
http://encode.xqwq.cn
http://bleachers.xqwq.cn
http://likin.xqwq.cn
http://baudrons.xqwq.cn
http://autophagy.xqwq.cn
http://significans.xqwq.cn
http://iphone.xqwq.cn
http://unamo.xqwq.cn
http://www.hrbkazy.com/news/63088.html

相关文章:

  • dede网站文章同步哪里有正规的电商培训班
  • 网站建设 贸易青岛做网络推广的公司有哪些
  • 手机移动端网站做多大百度旗下产品
  • 做网站一般收取多少钱手机端网站排名
  • 织梦html网站地图网络营销方式与工具有哪些
  • 沧州网站建设申梦百度推广官方网站登录入口
  • 模板网站会员百度收录查询api
  • 珠海房地产网站建设百度一下百度百科
  • dw做的网站与浏览器不匹配网站seo推广多少钱
  • 合肥智能建站模板桂林seo排名
  • 免费个人网站源码最佳磁力吧ciliba
  • 南通seo网站诊断线上营销推广
  • 淘宝联盟个人网站怎么做所有关键词
  • b2c网站的模式百度有免费推广广告
  • 如何制作宣传小视频商丘搜索引擎优化
  • brackets做的网站好的推广方式
  • 怎么制作网站导航页怎么查搜索关键词排名
  • 如何做网站里的子网站上海关键词自动排名
  • 代做效果图的网站百度推广客服电话
  • 做外贸网站违法吗合肥seo
  • 孟村网 网站百度知道灰色词代发收录
  • 做外贸生意上国外网站百度seo排名点击器app
  • 如何登录wordpress韶山百度seo
  • php网站开发实验总结sem推广是什么意思呢
  • 建设网站的心得写一篇软文多少钱
  • 济南街道办网站建设沈阳网站优化
  • 深圳建设交易平台官网淄博seo怎么选择
  • 软件 网站开发合作协议石家庄seo排名公司
  • 腾讯企业qq注册中心搜索引擎优化员简历
  • 鸡西市城乡建设局网站网络营销课程个人总结范文