2014-02-17 127 views
0

我想在我的手机和蓝牙卡之间的服务在android中建立连接,但我有一个服务问题。服务半小时后会自动重新启动。我的目标是尽可能保持我的服务运行。蓝牙服务

public void onCreate() { 
Log.d("PrinterService", "Service started"); 

    super.onCreate(); 
} 

@Override 
public IBinder onBind(Intent intent) { 

return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
Log.d("PrinterService", "Onstart Command"); 
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
if (mBluetoothAdapter != null) { 

    if(bluetoothProvider != null) 
     bluetoothProvider = null; 

     bluetoothProvider = new BluetoothProvider(getApplicationContext()); 
     bluetoothProvider.startUpdates(); 
} 

return Service.START_STICKY ; 
} 

@Override 
public void onDestroy() { 
super.onDestroy(); 
} 

回答

0

您应该创建一个粘性服务。

您可以通过在onStartCommand中返回START_STICKY来做到这一点。

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("LocalService", "Received start id " + startId + ": " + intent); 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

另请参阅应用程序:持久性,即“应用程序是否应始终保持运行”。这更麻烦 - 系统会尽量不杀你的应用程序,这会影响系统中的其他人,你应该小心使用它。

参考以下链接: https://stackoverflow.com/a/15038770/3110609

+0

谢谢你,我也做了同样的事情,但服务继续做一个自动重新启动半小时后 – user2838231

+0

ü需要使用报警manager.do经过报警经理的教程。 –

+0

,我也试过'android:process =“”'在我的清单中,服务做了一个自动重启 – user2838231