`
ouyangfeng521
  • 浏览: 248653 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

QQ push 进程守护

 
阅读更多

package com.tencent.mm.booter;

 

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import com.tencent.mm.sdk.platformtools.o;

import com.tencent.mm.sdk.platformtools.r;

 

public class MMReceivers$AlarmReceiver extends BroadcastReceiver

{

  public static void k(Context paramContext)

  {

    long l1 = r.aag();

    o.ak("MicroMsg.AlarmReceiver", "bumper comes, next=" + l1);

    if (l1 > 1860000L)

      return;

    if (l1 < 30000L);

    for (long l2 = 30000L; ; l2 = l1)

    {

      o.ai("MicroMsg.AlarmReceiver", "reset bumper, interval=" + l2);

      AlarmManager localAlarmManager = (AlarmManager)paramContext.getSystemService("alarm");

      if (localAlarmManager == null)

      {

        o.ah("MicroMsg.AlarmReceiver", "keep bumper failed, null am");

        return;

      }

      PendingIntent localPendingIntent = PendingIntent.getBroadcast(paramContext, 1, new Intent(paramContext, AlarmReceiver.class).putExtra("MMBoot_Bump", true), 268435456);

      localAlarmManager.set(0, l2 + System.currentTimeMillis(), localPendingIntent);

      return;

    }

  }

 

  public static void l(Context paramContext)

  {

    AlarmManager localAlarmManager = (AlarmManager)paramContext.getSystemService("alarm");

    if (localAlarmManager == null)

      o.ah("MicroMsg.AlarmReceiver", "stop bumper failed, null am");

    PendingIntent localPendingIntent;

    do

    {

      return;

      localPendingIntent = PendingIntent.getBroadcast(paramContext, 1, new Intent(paramContext, AlarmReceiver.class).putExtra("MMBoot_Bump", true), 536870912);

    }

    while (localPendingIntent == null);

    localAlarmManager.cancel(localPendingIntent);

    localPendingIntent.cancel();

  }

 

  public static void m(Context paramContext)

  {

    o.ai("MicroMsg.AlarmReceiver", "keep awaker");

    AlarmManager localAlarmManager = (AlarmManager)paramContext.getSystemService("alarm");

    if (localAlarmManager == null)

    {

      o.ah("MicroMsg.AlarmReceiver", "keep awaker failed, null am");

      return;

    }

    PendingIntent localPendingIntent = PendingIntent.getBroadcast(paramContext, 0, new Intent(paramContext, AlarmReceiver.class), 268435456);

    localAlarmManager.setRepeating(0, 900000L + System.currentTimeMillis(), 900000L, localPendingIntent);

  }

 

  public static void n(Context paramContext)

  {

    o.ai("MicroMsg.AlarmReceiver", "stop awaker");

    AlarmManager localAlarmManager = (AlarmManager)paramContext.getSystemService("alarm");

    if (localAlarmManager == null)

      o.ah("MicroMsg.AlarmReceiver", "keep awaker failed, null am");

    PendingIntent localPendingIntent;

    do

    {

      return;

      localPendingIntent = PendingIntent.getBroadcast(paramContext, 0, new Intent(paramContext, AlarmReceiver.class), 536870912);

    }

    while (localPendingIntent == null);

    localAlarmManager.cancel(localPendingIntent);

    localPendingIntent.cancel();

  }

 

  public void onReceive(Context paramContext, Intent paramIntent)

  {

    boolean bool = paramIntent.getBooleanExtra("MMBoot_Bump", false);

    o.aj("MicroMsg.AlarmReceiver", "[ALARM NOTIFICATION] bump:" + bool);

    if (bool)

      k(paramContext);

    while (g.c(paramContext, "alarm"))

      return;

    n(paramContext);

  }

}

 

 

 

原理,用AlarmManager 间隔12s启动一次service  没有重写service的onStartCommand

分享到:
评论

相关推荐

    android双进程守护 消息推送

    在Android开发中,"双进程守护"是一种关键的技术,它主要应用于消息推送服务,确保即使在用户退出应用程序后,后台服务仍然能够运行并接收推送消息。这种技术在诸如移动应用、QQ、微信、微博等社交应用中至关重要,...

    Rsync.docx

    3. 守护进程(daemon)模式:Rsync可以作为守护进程运行,监听特定的网络端口,等待连接请求。如`rsync -az /backup/ rsync_backup@192.168.90.41::backup/`,此命令将数据推送到远程的Rsync守护进程上。守护进程...

    adb.zip安卓ADB工具,WIN7通用

    它包含三个主要组件:服务器、守护进程和服务端。 **ADB的功能** 1. **设备管理**:连接并管理Android设备或模拟器,列出所有已连接的设备。 2. **文件传输**:在电脑和设备之间传输文件,如安装APK、备份数据等。 ...

    adb Android SDK Platform-Tools 23

    服务器端运行在开发者的工作站上,守护进程端运行在连接的Android设备上,客户端则包含在开发者使用的命令行工具中。通过USB或无线网络,adb能够建立开发者电脑和Android设备之间的通信桥梁。 在Android SDK ...

    ADB工具与驱动

    在Windows 7上,`adb.exe`是一个可执行文件,它作为客户端运行,连接到运行在开发者机器上的ADB服务器,服务器再通过USB或网络连接与Android设备上的守护进程通信。ADB支持多种命令,如: 1. `adb devices`:列出...

    adb工具,里面有安装说明。

    adb由三个组件组成:服务器、守护进程和客户端。服务器运行在主机(通常是PC)上,管理与设备的连接;守护进程在每个连接的Android设备上运行,处理来自服务器的请求;客户端则是在开发者机器上运行的命令行程序,...

    adb.exe工具,命令输入工具

    服务器运行在开发者的电脑上,守护进程运行在设备上,客户端则可以是电脑上的命令行工具或自动化脚本。 二、adb的基本操作 1. 连接设备:使用`adb devices`命令,可以查看当前已连接的设备和它们的状态。 2. 安装...

    adb相关培训

    1. **adb基本概念**:adb由三部分组成:服务器端(运行在开发机上)、守护进程(运行在设备上)和客户端(开发机上的命令行工具)。通过USB或网络连接,adb实现了开发机和设备之间的通信桥梁。 2. **adb安装与配置*...

    最新版adb1.0.41.7z

    - **ADB组成**:ADB主要由三部分构成,分别是服务器端(通常在开发者电脑上)、守护进程(在安卓设备上运行)和USB驱动(用于电脑与设备之间的连接)。 - **连接模式**:ADB支持USB连接、Wi-Fi连接以及网络连接,...

    memcached客户端文件及服务端

    3. 运行服务:解压后,你可以找到可执行文件`memcached.exe`,双击运行,或者通过命令行以守护进程方式启动,例如:`memcached.exe -d install`来安装服务,`memcached.exe -d start`来启动服务。 4. 配置:...

    adb命令学习

    关闭正在运行的ADB守护进程,当遇到ADB服务异常时,可以使用此命令来解决。 #### 8. 重启ADB服务 ```bash adb start-server ``` 启动ADB服务,当需要重新初始化ADB环境时使用。 #### 9. 获取MAC地址 ```bash adb ...

Global site tag (gtag.js) - Google Analytics