2014-03-03 33 views
1

Android。如何在系统要杀死它之后让应用程序继续运行?
或者如何不让系统杀死它?Android。如何在系统要杀死它之后让应用程序继续运行。或者如何不让系统杀死它呢

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

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

使用AlarmManager,广播接收器

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

让我们简化示例。例如,我想要定期打开应用程序(显示当前的活动)。过程如下:双击图标运行应用程序,然后通过主页按钮最小化。该应用程序出现在“正在运行的应用程序”(在缓存中)。开始主动使用手机,我的应用程序逐渐被替换,并从“正在运行的应用程序”中消失。假设第一次运行一小时后,我希望应用程序重新打开(初始活动)。我希望AlarmManager增加OnReceive事件,其中拼写的Activity打开主应用程序。

我做错了什么?

回答

0

您的待定意图存在问题。使用相同的操作和类别来匹配Receiver意图过滤器来唤醒Receiver。

0

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

+0

更新1中描述的死亡过程存在问题,请阅读,也许澄清情况 –

相关问题