我有一个带有服务的应用程序。服务是在create方法的主要活动中由应用启动的。我退出应用程序时出现问题:服务停止
清单文件
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:isolatedProcess="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DialActivity">
</activity>
<service
android:name=".ButtDial.CallDetectService"
android:enabled="true"
android:exported="true" />
<activity android:name=".Utils.IncomingCallActivity" />
<activity android:name=".Utils.OutGoingCallActivity"></activity>
<receiver
android:name=".ButtDial.CallHelper$OutgoingReceiver"
android:enabled="true"
android:exported="true"
android:label="RestartServiceWhenStopped">
</receiver>
</application>
我不知道当应用退出时如何启动我的服务 服务
public class CallDetectService extends Service {
private CallHelper callHelper;
public CallDetectService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
callHelper = new CallHelper(this);
int res = super.onStartCommand(intent, flags, startId);
callHelper.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
callHelper.stop();
}
@Override
public IBinder onBind(Intent intent) {
// not supporting binding
return null;}
public class MyBinder extends Binder {
public CallDetectService getService() {
return CallDetectService.this;
}
}}
活动中
请帮助我解决这个问题
Intent intent = new Intent(getBaseContext(), CallDetectService.class);
startService(intent);
答案 0 :(得分:0)
您可以在清单中将android:stopWithTask="false"
用作波纹管,这意味着,即使用户通过从tasklist
中删除应用而杀死了该应用,您的service
也不会停止。
<service
android:name="CallDetectService "
android:stopWithTask="false"
android:isolatedProcess="true"/>
更多内容请看this. 希望对您有帮助!
答案 1 :(得分:0)
即使您设法找到在Android N上执行的方法,该方法也不适用于对后台服务施加了一些限制的AndroidO。您将无法自由运行或启动服务。当应用进入后台时,服务将停止,就像调用stopSelf()
一样。
如果对确保服务运行到完成(即使应用已关闭)至关重要,那么您可以创建ForegroundService。这种方法也可以在Android O上使用。有关实现的详细信息,您可以按照我在SO上的回答进行操作。