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

扫描二维码关注公众号,回复: 682749 查看本文章

{

  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

猜你喜欢

转载自ouyangfeng521.iteye.com/blog/1868325
qq
今日推荐