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

Can external thread have service's context by parameter?

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

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

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

private Context serviceContext = parameterContext 在线程中。

这可能吗?或者有什么危险?

精确代码:

在职:

(...)

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

在 BleTalker 线程中 class:


     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 );
        }

    }

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

例如,我想从线程 class 中的 sharedPreference 获取信息。

    public class PrintControl {

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

现在我可以在线程中使用上下文 class。