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

标签 android toast intentservice android-intentservice

如果设备检测到加速度计,我目前正在尝试显示来自 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/

相关文章:

powershell - 从PowerShell发送的ToastNotifications从Action Center中消失

android - 如何让 toast 在不扩展 Activity 的类里面工作?

java - 从 Intent Service 更新 Activity UI?

android - 在 Android 中下载背景图片时需要帮助吗?

android - Anko 的 uiThread 偶尔不会被触发

android - 以编程方式更改 Android 的 "Make password visible"设置

java - 如果 Firebase 数据库没有子项,则返回 Mainactivity

android-layout - 如何使用清除按钮制作可重复使用的 EditText?

angularjs - 特定元素中的 Angular Material Toast

android - 将 Activity 实例保存在 WeakReference 中是一种好习惯吗