Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我怎样才能把吐司放在一个可运行的服务中?_Android_Service_Toast_Runnable - Fatal编程技术网

Android 我怎样才能把吐司放在一个可运行的服务中?

Android 我怎样才能把吐司放在一个可运行的服务中?,android,service,toast,runnable,Android,Service,Toast,Runnable,我有一个包含计时器和TimerTask的服务,用于在一段时间内从Webservice接收数据。除了吐司,一切都很好。我想在procSendMapMovements中向用户敬酒,但我得到一个异常。我怎么用吐司呢 class taskSendMapMovements extends TimerTask { @Override public void run() { hhSendMapMovements.sendEmptyMessage(0);

我有一个包含计时器和TimerTask的服务,用于在一段时间内从Webservice接收数据。除了吐司,一切都很好。我想在procSendMapMovements中向用户敬酒,但我得到一个异常。我怎么用吐司呢

class taskSendMapMovements extends TimerTask {
        @Override
        public void run() {
            hhSendMapMovements.sendEmptyMessage(0);
        }
    };



    // /////////////////////

    final Runnable rSendMapMovements = new Runnable()
    {
        public void run()
        {
            procSendMapMovements();
        }
    };

    final Handler hhSendMapMovements = new Handler(new Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            performOnBackgroundThread(rSendMapMovements);

            return false;
        }
    });

    // /////////////////////

    public void procSendMapMovements() {
        try {


            Toast.makeText(SrvDataExchange.this,
                    "some texts"
                    Toast.LENGTH_SHORT).show();
// exception here
// my process


        } catch (Exception e) {


        }
    }


@Override
    public void onStart(Intent intent, int startId) {
        try {



            timerSendMapMovements = new Timer();


            timerSendMapMovements
                        .schedule(new taskSendMapMovements(),
                                10*60*1000,
                                10*60*1000);

            //

        } catch (NumberFormatException e) {
            Toast.makeText(this, "error running service: " + e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(this, "error running service: " + e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
    }



public static Thread performOnBackgroundThread(final Runnable runnable) {
        final Thread t = new Thread() {
            @Override
            public void run() {
                try {
                    runnable.run();
                } finally {

                }
            }
        };
        t.start();
        return t;
    }

创建一个处理程序以显示toast

使用以下内容:

要显示toast call的位置:

//printToast.sendEmptyMessage();//If you dont want to send no paramter
//if you want to send some object to handler
/*
Message msg=printToast.obtainMessage();
msg.obj=objToSent;
printToast.sendMessage(msg);
*/
final Handler printToast= new Handler(new Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            Toast.makeText....;

        }
    });
**


**

java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序,如果没有Toast,则我的进程将完全按照//my process完成
Handler printToast= new Handler(new Callback() {

        @Override
        public boolean handleMessage(Message msg) {
            Toast.makeText....;
        }
    });
your Runnable
{

   run()
   {

      do what ever you want 
      printToast.sendMessage(printToast.obtainMessage());
        }

}