从最近的应用程序关闭应用程序时服务停止
Posted
技术标签:
【中文标题】从最近的应用程序关闭应用程序时服务停止【英文标题】:Service stops at time of app close from recent applications 【发布时间】:2019-12-05 11:02:27 【问题描述】:在我的一个应用程序中,我正在使用前台服务获取用户当前位置... 我的问题是当我从最近的应用程序中删除应用程序时,它会强制停止我的应用程序并停止我的服务 for this device i am getting such issue 我尝试了如下所示的服务
@Override
public void onTaskRemoved(Intent rootIntent)
super.onTaskRemoved(rootIntent);
//TRY 1 but not worked!!!!
// Intent broadcastIntent = new Intent("uk.ac.shef.oak.ActivityRecognition.RestartSensor");
// sendBroadcast(broadcastIntent);
// stoptimertask();
// Intent broadcastIntent = new Intent(this, SensorRestarterBroadcastReceiver.class);
// sendBroadcast(broadcastIntent);
//
// writeDataInLogFile("Service onTaskRemoved ", " TRIED TO RESTART SERVICE FROM ONDESTROY ");
Log.i(TAG, "Task Removed!!!!!!!!!!!!!!!!!!!!!!");
try
//TRY 2 ALSO NOT WORKING
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);
catch (Exception e)
在清单中,我已将上述服务添加为
<service
android:name=".service.LocationUpdateForegroundService"
android:enabled="true"
android:stopWithTask="false"
android:exported="true" />
但是,当我从最近的应用程序中删除应用程序时,它会强制关闭我的应用程序,如果我检查应用程序是否将其设置为强制关闭应用程序。(上述问题仅与某些设备有关.. 并非每个设备都出现此类问题设备 ) 我该怎么办?请帮我 根据建议,我喜欢参加我的服务班,但还没有得到我的解决方案!!!
try
System.out.println("this is start!!!!!!!!!!!!!!!!!!!!");
Intent intent = new Intent(this, PowerOnOffBroadcastReceiver.class);
intent.setAction("service.RestartService");
PendingIntent mKeepAlivePendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
((AlarmManager) this.getSystemService(Context.ALARM_SERVICE)).setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 10000, 10000, mKeepAlivePendingIntent);
catch (Exception e)
System.out.println("new implementation !!!!!!!!!!!!!!!!!");
我发现一些解决方案是:This 但是当用户单击最近活动的关闭按钮并从内存中清除所有应用程序时,它会停止我的服务
【问题讨论】:
手机安卓版本是多少? @Mr AF 请检查我在链接中提供的图片 【参考方案1】:我有一个完美的解决方案。我正在使用所有操作系统(如氧气、颜色和 miui)在 oreo 中进行测试。我正在开发一个 VoIP 应用程序,在我的应用程序中,一个 sip 服务在应用程序被用户破坏或杀死后继续运行。用户设置应用程序的另一件事始终是在手机设置中运行后台和电池优化。
我正在使用警报管理器来保持我的服务活跃,它比作业调度程序和再次调用服务要好。我在服务类的 oncreate() 方法中实现了这段代码。
PendingIntent mKeepAlivePendingIntent;
public class CallService extends Service
@Override
public void onCreate()
super.onCreate();
Intent intent = new Intent(this, RestartServiceBroadcast.class);
mKeepAlivePendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
((AlarmManager) this.getSystemService(Context.ALARM_SERVICE)).setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60000, 60000, mKeepAlivePendingIntent);
当用户从内存任务中杀死应用程序时,创建 BroadcastReceiver 以再次调用服务
public class RestartServiceBroadcast extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
if (intent.getAction().equals("service.RestartService"))
// Here Call a Service
像这样显示
<receiver
android:name=".service.receiver.RestartServiceBroadcast"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="service.RestartService" />
</intent-filter>
</receiver>
<service
android:name=".service.CallService"
android:enabled="true"
android:exported="false"
android:stopWithTask="false">
</service>
谢谢,快乐的编码......
【讨论】:
嘿!我正在为此工作..请告诉什么是 mKeepAlivePendingIntent 和 android:process=":sipStack" 这里什么是 sipStack?和 A PendingIntent 是您给外部应用程序(例如 NotificationManager 、 AlarmManager 、 Home Screen AppWidgetManager 或其他 3rd 方应用程序)的令牌,它允许外部应用程序使用您的应用程序的权限来执行预定义的一段代码。 .....当调用广播时,它会检查广播中 onrecieve() 方法中的操作...... if (intent.getAction( ).equals("service.RestartService")) // 这里调用一个服务 嘿!我试过你的把戏。但是,如果我从最近的活动中删除应用程序,它对我不起作用,它会强制停止我的应用程序并且不会触发广播接收器。 这是什么意思?请解释以上是关于从最近的应用程序关闭应用程序时服务停止的主要内容,如果未能解决你的问题,请参考以下文章