Android 如何杀死活套/可运行

Android 如何杀死活套/可运行,android,Android,我有一个异步作业,它是从按钮单击侦听器启动的。这是一项印刷工作,所以它会在一天中一次又一次地发生。我想确保在打印作业之间没有线程或对象泄漏。我需要的就是looper.mylooper.quit()行吗 侦听器代码为: private final Button.OnClickListener cmdPrintOnClickListener = new Button.OnClickListener() { public void onClick(View v) {

我有一个异步作业,它是从按钮单击侦听器启动的。这是一项印刷工作,所以它会在一天中一次又一次地发生。我想确保在打印作业之间没有线程或对象泄漏。我需要的就是looper.mylooper.quit()行吗

侦听器代码为:

    private final Button.OnClickListener cmdPrintOnClickListener = new Button.OnClickListener() {

    public void onClick(View v) {
        enableScreenForUse(false);
        setStatus("Saving any changes");
        saveButtonClicked();
        TwoInchZebraDocket newDocket  = new TwoInchZebraDocket(mRunDetailID, getContentResolver());  //could set this to final if we get problems -> see for details http://stackoverflow.com/questions/11424924/how-can-i-pass-an-object-to-a-new-thread-generated-anonymously-in-a-button-liste/11425012?iemail=1#11425012
        setStatus("Creating docket for printing");
        PrintRunnable target = new PrintRunnable(newDocket, CheckoutActivity.this);
        new Thread(target).start();

      }
};
可运行的目标代码是:

    public void run() {
    Looper.prepare();
    printDocket();
    Looper.loop();
    Looper.myLooper().quit();

}

我想你想要的是你的任务。如果“printDocket()”正在更新您的UI线程,那么您将必须引用循环器,这是不方便的

以下是开发人员文档:


基本上,在doInBackground()中执行异步线程工作,在onPostExecute()中执行UI更新。

我尝试了这两种方法,但无论哪种方法,我都必须有一个looper.prepare(),否则与移动打印机的蓝牙连接将失败。不管怎样,我仍然需要知道是否有任何泄漏。