【发布时间】:2019-10-09 03:24:59
【问题描述】:
我想使用带有 start(Intent) 的 Intent 并执行由 Thread 控制的不同事情。 我知道我需要主上下文才能使用“startActivity”,但是如何从单独的线程中管理它? 是否可以使用 Handler 或其他东西将“startActivity”链接到主线程?
使用示例:
Public Classic mThread implements Runnable{
@override
Public void Run()
{
If (true) //something is true
{
Intent intent = new Intent (Bluetoothadapter.Enable()):
startActivity(Intent):
}
If(true) //Something else is true
{
Intent intent = new Intent (MainActivity, esp.class);
startActivity (intent)
}
}
}
更新
这是我遇到问题的代码:
public class cBT_startcheck extends MainActivity implements Runnable {
private int iCurrent_BT_state = mBluetoothAdapter.getState();
@Override
public void run() {
if (mBluetoothAdapter == null) {
cGlobal_values.bBT_NOADAPTER =true;
}else if (mBluetoothAdapter != null)
{
cGlobal_values.bBT_NOADAPTER =false;
switch (iCurrent_BT_state)
{
case BluetoothAdapter.STATE_ON:
cGlobal_values.bBT_GenState_on=true;
break;
case BluetoothAdapter.STATE_OFF:
cGlobal_values.bBT_GenState_on =false;
break;
}
if (!mBluetoothAdapter.isEnabled()){
Log.d("HALLO", "run: ");
//Intent intBT_start = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
//mainContext.startActivity(intBT_start);
vStart_BT();
}
}
}
}
主要活动
这是我在 MainActivity 中所做的
public class MainActivity extends AppCompatActivity {
public Handler mainHandler = new Handler(Looper.getMainLooper());
public void vStart_BT()
{
mainHandler.post(new Runnable() {
@Override
public void run() {
Intent intBT_start = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(intBT_start);
}
});
}
}
问题
如何从一个用单独的类编写的第二个线程执行一些 Intent?
如果这个想法本身不对:
我不知道如何使用“starActivity”将 Intent 传递给主线程。
【问题讨论】:
标签: java android multithreading start-activity