机器人。如何在系统杀死后继续运行应用程序? 或者如何不让系统杀死它?
我需要在前台支持该应用程序。 也就是说,无论是最小化还是关闭,每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打开主应用程序。
我做错了什么?
答案 0 :(得分:0)
您的待处理意图出现问题。使用相同的操作和类别来匹配Receiver intent过滤器以唤醒Receiver。
答案 1 :(得分:0)
最终你无法阻止android杀死你的活动。任何内存危机都会出现,没有保证您的应用程序将运行。最后优先考虑在后台运行的服务不会被杀死。但是使用你的Service.start_sticky告诉android,唤醒运行后台服务和内存变得可用。因此,该服务只是一个Android组件,您可以继续为您的应用程序运行,也没有保证。