gpt4 book ai didi

android - 前台服务已终止且未重新启动

转载 作者:行者123 更新时间:2023-11-30 01:29:13 24 4
gpt4 key购买 nike

我用 Android BLE(蓝牙低能耗)开发了一个应用它工作正常,但当 Android 需要更多内存时,我的服务被终止。

  • 我正在使用具有单独进程的前台服务。

    <接收器android:name=".BluetoothLeService$MyReceiver"/>

    <服务android:name=".BluetoothLeService" 机器人:启用=“真” 机器人:导出=“真” android:process=":myservice"/>

我从以下 Activity 开始我的服务:

 startService(new Intent(this, BluetoothLeService.class));

在我的服务中:

    @Override
public int onStartCommand(Intent intent, int flags, int startId) {

SetNotification(0);
return START_STICKY;
}

但是当我的服务被操作系统终止时,它不会重新启动。我试过关闭所有最近的应用程序但没有得到任何解决方案....

有什么解决办法吗?请帮我。任何帮助将不胜感激。提前谢谢你。

--- Poweramp 应用程序并非永远不会终止 --- 为什么?

编辑:

OnCreate 中的 MainActivity:

...
startService(new Intent(this, BluetoothLeService.class));

在蓝牙服务中:

 @Override
public void onDestroy() {
unregisterReceiver(mReceiver); // receiver for bt on and bt off
super.onDestroy();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

SetNotification(0);
return START_STICKY;
}

@Override
public IBinder onBind(Intent intent) {
return null;
}


public void SetNotification(int VerdeRosso){

if (VerdeRosso == 1) { // connected
remoteViews = new RemoteViews(getPackageName(), R.layout.notification_connesso);
}else {
remoteViews = new RemoteViews(getPackageName(), R.layout.notification_disconnesso);
}
mBuilder = new NotificationCompat.Builder(getApplicationContext());
mBuilder.setContent(remoteViews);
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
startForeground(123, mBuilder.build()); // 123 è l'id a caso
}

@Override
public void onCreate() {


mBluetoothManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
mBluetoothAdapter = mBluetoothManager.getAdapter();

//broadcaster = LocalBroadcastManager.getInstance(this);

IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
mReceiver = new MyReceiver();

registerReceiver(mReceiver, filter);
scanLeDevice(true);

}

--- 编辑 2

    private final IBinder myBinder = new LocalBinder();

public class LocalBinder extends Binder {
BluetoothLeService getService() {
return BluetoothLeService.this;
}
}
....
@Override
public IBinder onBind(Intent intent) {

return myBinder;
}

最佳答案

您可以通过这种方式查看服务何时被杀死并重新启动:

@Override
public void onLowMemory() {
//Send broadcast to the Activity to kill this service and restart it.
super.onLowMemory();
}

@Override
public void onTaskRemoved(Intent rootIntent)
{
//Send broadcast to the Activity to restart the service
super.onDestroy();
}

您可以进行 2 次广播或仅进行上述其中一次广播。

关于android - 前台服务已终止且未重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com