Android系统。如何在系统杀死它之后保持应用程序运行。或者如何不让系统杀死它

时间:2014-03-03 12:19:55

标签: android broadcastreceiver alarmmanager

机器人。如何在系统杀死后继续运行应用程序? 或者如何不让系统杀死它?

我需要在前台支持该应用程序。 也就是说,无论是最小化还是关闭,每30秒打开一次应用程序。

当应用程序运行时(它显示在缓存列表中),方法称为OnReceive。如果应用程序从内存中卸载,则不再触发活动

使用AlarmManager,BroadcastReceiver

Activity1.OnCreate

...
Intent intent = new Intent(this, typeof(MyAppReciever));
PendingIntent sender = PendingIntent.GetBroadcast(this, 0, intent,PendingIntentFlags.UpdateCurrent);
AlarmManager am = (AlarmManager)GetSystemService(AlarmService);
am.SetRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime()+30000,30000,sender);

广播接收器

[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionPowerConnected })]
public class MyAppReciever : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        Intent intent1 = new Intent(context, typeof(Activity1));
        intent1.AddFlags(ActivityFlags.NewTask);
        context.StartActivity(intent1);
    }
}

清单

    ....
    <uses-permission android:name="android.permission.WAKE_LOCK" />
  <receiver android:name="AndroidApplicationTest.MyAppReciever">
        <intent-filter>
                <action android:name="android.intent.action.POWER_CONNECTED" />
                <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
        </intent-filter>
  </receiver>

UPD#1

让我们简化一下这个例子。例如,我希望定期打开应用程序(显示当前的Activity)。步骤如下:双击图标运行应用程序,然后通过主页按钮最小化。该应用程序出现在“工作应用程序”中(在缓存中)。开始积极使用手机,我的应用程序逐渐被替换并从“工作应用程序”中消失说第一次运行一小时后,我希望应用程序重新打开(初始Activity)。我希望AlarmManager上升OnReceive事件,其中拼写的Activity打开主应用程序。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您的待处理意图出现问题。使用相同的操作和类别来匹配Receiver intent过滤器以唤醒Receiver。

答案 1 :(得分:0)

最终你无法阻止android杀死你的活动。任何内存危机都会出现,没有保证您的应用程序将运行。最后优先考虑在后台运行的服务不会被杀死。但是使用你的Service.start_sticky告诉android,唤醒运行后台服务和内存变得可用。因此,该服务只是一个Android组件,您可以继续为您的应用程序运行,也没有保证。