0

そうです、私のスレッドは実行されていないか、その中でコードを実行していません。SDカードからシェルスクリプトを実行し、「読み込み中」の円または「進行中」の円、またはあなたがそれを呼びたいものを表示したかっただけです。ボタンをクリックしてスレッドを実行すると、進行状況/読み込みバー/円が表示されますが、そこに座っているだけで何もしません。いくつかの例を見てきましたが、何が間違っていたのかまだわかりません。これが私のコードです:

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();
    }
};

}

それで、私は何か間違ったことをしていますか?コードが実行されないのはなぜですか? ありがとう!

4

1 に答える 1

1

スレッドは何を実行するかを知りません。変化する

public class Install extends Activity{

public class Install extends Activity implements Runnable {

変更する

Thread thread = new Thread();

Thread thread = new Thread(this);
于 2013-03-20T23:27:59.923 に答える