外部线程可以通过参数获得服务的上下文吗?



我的前台服务创建线程,这些线程需要有上下文。

所以我把它传给喜欢的:MyThread mt = new MyThread(this)在服务。

MyThread通过自己的成员值保存其上下文参数,如:

线程中的private Context serviceContext = parameterContext

这可能吗?还是有危险?

精确代码:

在役:

(...)
BleTalker bt = new BleTalker(devNo,bdv,bleHandler,this);
bt.start();

在BleTaker线程类中:


public BleTalker(int dNum, BluetoothDevice device, Handler bh,Context c){
this.devNumber = dNum;
myDevice = device;
bleHandler = bh;
serviceContext = c;
Log.d(gd,"ble talker thread is init");
}

public void initBLE(){
Log.d(gd,"get device? : " + myDevice.getName());
BluetoothManager bm = (BluetoothManager) serviceContext.getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bm.getAdapter();
bluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
if(myDevice!= null) { 
//This method is used to re-connect to a remote device after the connection has been dropped.
connect(myDevice.getAddress(),true );
}
}

要在Thread类中获取上下文,请在Thread中创建构造函数并使用它。

例如,我想从Thread类中的sharedPreference获取信息。

public class PrintControl {
private Context context;
private SharedPreferences printPreferences;

public PrintControl(Context context) {
this.context = context;
printPreferences = this.context.getSharedPreferences("printInfo", MODE_PRIVATE);
}
}

现在我可以在Thread类中使用上下文了。

最新更新