2013-03-20 58 views
0

所以是的,我的线程没有执行,或者执行其中的代码。我只是想从我的SD卡上运行一个shell脚本,并显示一个“加载”圈子或“进度”圈子或任何你想调用它。当我点击按钮来运行线程时,我得到进度/加载栏/圆圈,但它只是坐在那里,什么都不做。我已经看过一些例子,但仍然无法弄清楚我做错了什么。这是我的代码:Android - 线程没有执行

package com.cydeon.plasmamodz; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.concurrent.TimeoutException; 

import com.stericson.RootTools.*; 
import com.stericson.RootTools.exceptions.RootDeniedException; 
import com.stericson.RootTools.execution.CommandCapture; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.res.AssetManager; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.Handler; 
import android.os.Message; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Install extends Activity{ 

private static ProgressDialog progressDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.install); 
    Button bInstall = (Button) findViewById(R.id.bInstallTheme); 
    bInstall.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showDialog(); 
     } 
    }); 
} 


public void showDialog(){ 
    progressDialog = ProgressDialog.show(Install.this, "", "Installing Theme", true); 
    Thread thread = new Thread(); 
    thread.start(); 
} 

public void run(){ 
    try{ 
     Thread.sleep(1000); 
     CommandCapture command = new CommandCapture(0, "su", "sh /sdcard/plasma/scripts/install.sh"); 
     try { 
      RootTools.getShell(true).add(command).waitForFinish(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (TimeoutException e) { 
      e.printStackTrace(); 
     } catch (RootDeniedException e) { 
      e.printStackTrace(); 
     } 
    }catch (InterruptedException e){ 
     e.printStackTrace(); 
    } 
    handler.sendEmptyMessage(0); 
} 

private static Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     progressDialog.dismiss(); 
    } 
}; 

} 

所以,我做错了什么?为什么它不运行我的代码?谢谢!

回答

1

线程不知道要运行什么。更改

public class Install extends Activity{ 

public class Install extends Activity implements Runnable { 

,改变

Thread thread = new Thread(); 

Thread thread = new Thread(this);