Xzi*_*il0 7 android xamarin.android xamarin
如何在应用程序退出时执行一些代码?我想在应用程序退出时删除临时数据.通过应用程序退出我的意思是应用程序没有在后台运行最小化,它完全消失.
我试图使服务在单独的进程中运行,服务正在检查应用程序进程是否未运行它应该删除临时文件夹.使用此方法,临时文件夹并不总是被删除,因为进程仍以最低优先级运行.
我无法在OnDestroy()中执行此操作.
服务代码:
[Service(Process = "com.lobomonitor")]
[IntentFilter(new string[] { "com.androidgui.ProcessMonitorService" })]
public class ProcessMonitorService : Service
{
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
Thread processThread = new Thread(() =>
{
ActivityManager actManager = (ActivityManager) this.GetSystemService(ActivityService);
while (true)
{
Thread.Sleep(1000);
IList<ActivityManager.RunningAppProcessInfo> procList = actManager.RunningAppProcesses;
procList.Any(i => i.ProcessName.Equals("com.androidgui"));
if (!procList.Any(i => i.ProcessName.Equals("com.androidgui")))
{
FolderManager.Singleton.DeleteTempFolder();
break;
}
}
});
processThread.Start();
return StartCommandResult.RedeliverIntent;
}
public override IBinder OnBind(Intent intent)
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
F1s*_*her 14
我不知道是否有帮助,但如果你杀了你的应用程序,那么运行在后台调用方法中的服务:
@Override
public void onTaskRemoved(Intent rootIntent){
super.onTaskRemoved(rootIntent);
}
Run Code Online (Sandbox Code Playgroud)
例如,我曾经有一个运行服务的应用程序.当我杀了app - 服务也死了,但我想让它活着.通过使用onTaskRemoved,我能够安排重启服务:
@Override
public void onTaskRemoved(Intent rootIntent){
Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass());
restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmService.set(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 1000,
restartServicePendingIntent);
super.onTaskRemoved(rootIntent);
}
Run Code Online (Sandbox Code Playgroud)
效果是 - >我正在杀死我的应用程序 - >服务看到正在删除任务并调用onTaskRemoved - >我在1秒内调度服务重启 - >服务死亡 - >一秒后它醒来 - >结果:应用程序是杀死,我执行了重新启动我的服务的代码,因此它仍然在后台运行(仅在首选项中可见 - >作为进程的应用程序)
http://developer.android.com/reference/android/app/Service.html
void onTaskRemoved(Intent rootIntent)
Run Code Online (Sandbox Code Playgroud)
如果服务当前正在运行且用户已从服务的应用程序中删除了任务,则会调用此方法.
| 归档时间: |
|
| 查看次数: |
21807 次 |
| 最近记录: |