我的前台服务创建线程,这些线程需要有上下文。
所以我把它传给喜欢的: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类中使用上下文了。