我在后台运行我的程序如下:
nohup ./program -c config.cfg &
Run Code Online (Sandbox Code Playgroud)
所以我在我的程序中看到了分段错误,并决定使用gdb. 我的程序有一些无限循环,再次处理分段错误错误可能需要几个小时。
所以我想在后台运行程序。
我应该如何将 gdb 参数传递给nohup?
我有一个启动后台进程的命令
./daemon.sh &
它工作正常,但是当我尝试按以下方式运行它时
bash -i -c "./daemon.sh & ; ./another_daemon.sh &"
它抛出异常 bash: syntax error near unexpected token `;'
有什么方法可以启动后台进程 bash -i -c "..."
在我们的应用程序中,我们使用多个服务和意图服务来进行 BLE 通信、麦克风录音等。
我们注意到了新的背景限制和限制(是的,我知道我们确实很晚才注意到)。我已经更改了使用 ContextCompat.startForegroundService() 函数的实现,并将 startForeground() 与文档中所述的通知一起使用。
但我们看到,当应用程序被终止时,前台服务也会在几分钟后终止。它应该发生吗?仅当应用程序在后台时,前台服务才应继续工作吗?
另外,如果是这种情况,电池优化功能有何作用?使服务仅在后台运行?当应用程序处于后台并且启用此功能时,服务是否仍然可以被杀死?
我已经阅读了很多有关它的文档,但我仍然对应用程序被终止时的服务状态感到困惑。
我们不介意显示这些服务的通知,但我们仍然希望它继续“无休止”地工作。
android background-process foreground-service android-8.0-oreo
Stack Overflow 上几乎没有类似的问题,但没有一个解决方案对我有用
问题在于只有 OnePlus 和 MI 等少数设备,一旦用户从最近的应用程序中滑动应用程序,该服务就会被终止。
我读到这些 OEM 使用一些激进的策略来终止服务。我只想知道有什么方法可以让服务保持运行或在它被杀死后立即启动它。
我需要运行一项服务,该服务将在后台连续(24/7)提供位置(此应用程序仅适用于特定人群,因此无需担心电池寿命)。
我试过了:
运行前台服务。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
startService(intent)
}
Run Code Online (Sandbox Code Playgroud)
同样在onCreate以通知开始的服务方法中
@Override
public void onCreate() {
Log.i("Service", "onCreate");
startForeground(NOTIFICATION_ID, getnotification());
}
Run Code Online (Sandbox Code Playgroud)返回START_STICKY在onStartCommand
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
initLocationClient();
initLocationSyncThread();
return START_STICKY;
}
Run Code Online (Sandbox Code Playgroud)重新启动服务onDestroy,onTaskRemoved但他们没有被调用。
绑定服务
经常安排警报管理器并启动服务,但 Play 商店会警告我们的应用程序使用警报管理器过于频繁,这是一种不好的做法。现在有办法使用 workmanager 安排少于 15 分钟的时间,但仍然不能保证在 15 分钟后开始。
那么除了上述选项之外,还有什么方法可以继续运行服务吗?
我想制作一个定期向网站发出 HTTP 请求的应用程序。该应用程序必须在后台运行,但可以根据请求的响应唤醒或显示通知。就像WhatsApp的消息一样,但我没有网络服务器,只有http get请求的设备检查值。
所以我陷入困境,我正在构建一个宾果应用程序,我希望应用程序在应用程序进入后台时停止计时器。我的代码看起来像这样
var timer = Timer()
func ViewDidLoad(){
// other stuff
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(numberPicker), userInfo: nil, repeats: true)
}
Run Code Online (Sandbox Code Playgroud)
在我读过的其他帖子中,我看到人们建议将计时器定义为弱变量。当我尝试这个时,我的应用程序在尝试设置计时器时崩溃了。
我创建了一个 Xamarin 表单应用程序。应用程序应定期(每 10 秒)获取设备的位置(iOS 和 Android)。我怎样才能做到这一点?我知道有一些库,例如:Xamarin.Essentials,但我无法决定该位置应该被占用多少次。
当 Xamarin 表单应用程序在后台运行时(在 IOS 和 Android 上),也应该可以获取设备的本地信息。
我刚刚开发了一个 Android 应用程序(minSdkVersion 23/targetSdkVersion 29),它可以连接到 BluetoothLE 设备以定期获取数据。
现在,在 MainActivity(不是第一个活动)中,我执行以下注册广播接收器:
public class StatusActivity extends AppCompatActivity {
BleService mBleService;
BleScanCallback mScanCallback;
BroadcastReceiver mBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
mBroadcastReceiver = new LibBleBroadcastReceiver(this);
IntentFilter intentFilter = new IntentFilter()
intentFilter.addAction(BleService.ACTION_GATT_CONNECTED);
intentFilter.addAction(BleService.ACTION_GATT_DISCONNECTED);
intentFilter.addAction(BleService.ACTION_GATT_SERVICES_DISCOVERED);
intentFilter.addAction(BleService.ACTION_DATA_AVAILABLE);
intentFilter.addAction(BleService.ACTION_DID_WRITE_CHARACTERISTIC);
intentFilter.addAction(BleService.ACTION_DID_FAIL);
registerReceiver(mBroadcastReceiver, intentFilter);
mScanCallback = new LibBleScanCallback(this);
intent = new Intent(this, BleService.class);
connection = new LibBleServiceConnection(this);
startService(intent);
if (!bindService(intent, connection, Context.BIND_AUTO_CREATE)) {
throw new IllegalStateException("bindService not successful");
}
}
...
public void onDeviceDiscovered(String device_address){
device_connected.activateNotifications(mBleService, connected_device);
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { …Run Code Online (Sandbox Code Playgroud) android background-process android-bluetooth android-jobscheduler android-workmanager
当 flutter 应用程序在后台或从最近的任务(清除内存)中清除时,如何实现 WhatsApp/Telegram 之类的呼叫通知?任何人都可以让我知道究竟如何做到这一点?
我的应用程序包含一些背景音乐。我希望能够在用户离开应用程序时将其关闭。我可以通过使用以下方法来部分完成此操作WillPopScope:
Future<bool> _willPopCallback() async {
player.stop();
return true;
}
Run Code Online (Sandbox Code Playgroud)
但这不是正确的做法,因为它仅在用户单击 时才起作用back-button,而不是home-button。这是一个很大的问题,因为这样音乐就会一直在后台播放。我该如何解决?
android ×3
flutter ×2
swift ×2
audio-player ×1
bash ×1
gdb ×1
geofencing ×1
geolocation ×1
ios ×1
linux ×1
nohup ×1
phone-call ×1
timer ×1
ubuntu ×1