gpt4 book ai didi

android - 当在 onHandleIntent 中创建处理程序时,使用处理程序发布的来自 IntentService 的 Toast 不显示

转载 作者:行者123 更新时间:2023-11-30 03:06:45 24 4
gpt4 key购买 nike

如果设备检测到加速度计,我目前正在尝试显示来自 IntentService 的 toast 。为此,我搜索并了解到我可以实现处理程序。但是,它不是很有效。代码编译并在模拟器上运行没有任何错误,但 toast 不显示。我想知道我是否可以获得一些帮助来发现我的代码中的错误。代码如下所示。

如有任何帮助,我们将不胜感激!

public class AccelService extends IntentService implements SensorEventListener{
private SensorManager mySensorManager;
private Handler toastHandler;

public AccelService(){
super("AccelerometerIntentService");
}
...
private class ToastRunnable implements Runnable{
String toastText;
public ToastRunnable(String text){
toastText = text;
}
@Override
public void run(){
Toast.makeText(getApplicationContext(), toastText, Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onHandleIntent(Intent intent){
toastHandler = new Handler();
initialize();
}
public void initialize(){
mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
if(mySensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null){
toastHandler.post(new ToastRunnable("Accelerometer Detected!"));
}
}
...
}

最佳答案

onHandleIntent 中为 Toast 消息创建处理程序会将其绑定(bind)到错误的线程:

This method is invoked on the worker thread with a request to process.

显式设置处理程序的线程,例如,new Handler(getMainLooper()) 或在 onCreate 中创建处理程序。

关于android - 当在 onHandleIntent 中创建处理程序时,使用处理程序发布的来自 IntentService 的 Toast 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com