0

呼び出されたときに数行のコードを実行してから自動的に終了するテスト アプリを作成したいと考えています。これらすべてを onCreate() 内で実行したい。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    System.out.println("onCreate()");
    try {
        initSocket();        //connect to server
    } catch (IOException e) {
        e.printStackTrace();
    }
    new Thread(new AudioRecordThread()).start();
}

問題は、onCreate() でアプリを終了するにはどうすればよいですか? 「this.finish()」を試しましたが、うまくいきませんでした。

誰でも助けることができますか?

編集 スレッドが原因で問題が発生する可能性があることに同意します。解決したら私の回答を投稿します。

4

5 に答える 5

1

AudioRecordThread問題は、アプリと同じプロセスを共有していることだと思います。onCreate 内で this.finish() を明確に呼び出すことができます (これは頻繁に実行され、問題はありませんでした) が、必ずしもアクティビティと同時に強制終了されるという意味ではありませんAudioRecordThread。したがって、スレッドに関する詳細情報がなければ、アクティビティの終了時にスレッドが存続する必要がある場合、アドバイスを与えることはできません. そのスレッドを有効にしたい場合は、アクティビティが終了した後、サービスが最適です。

于 2012-06-06T09:20:19.950 に答える
0

これを試してください

仕上げは onCreate() & onResume().. で動作しています.コードに別の問題があります

 @Override
    protected void onResume()
    {
     super.onResume();
     finish();
    }
于 2012-06-06T09:14:54.367 に答える
0

試す

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    System.out.println("onCreate()");
    try {
        initSocket();        //connect to server
    } catch (IOException e) {
        e.printStackTrace();
    }
    new Thread(new AudioRecordThread()).start();
    finish();
}
于 2012-06-06T09:15:12.823 に答える
0

おそらくあなたがやろうとしているのはサービスですか?
ここを見てください:http://developer.android.com/reference/android/app/Service.html

于 2012-06-06T09:15:45.490 に答える
0

アクティビティで AsynTask を使用できます。このクラスをアクティビティの同じファイルに入れるだけです

=> onPostExecute() メソッドでは、アクティビティを閉じるために処理が終了したかどうかをテストします。

class MyAsynTask extends AsyncTask<Void, Integer, Boolean> {

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        // Init your variables, in my case it's my Progress Bar
        myprogress = new ProgressDialog(mcontext);
        myprogress.setTitle("Update");
        myprogress.setMessage("Update running ....");

        myprogress.show();
    }

    @Override
    protected Boolean doInBackground(Void... params) {
        // TODO Auto-generated method stub
        boolean test = false;
        int j = 0;
        for (int i = 0; i < 50; i++) {
            j = i + 10;
            publishProgress(i);
            // Your implemention code to connect to the server
            if (i == 49)
                test = true;
        }

        return test;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
        myprogress.setProgress(values[0]);
    }

    @Override
    protected void onPostExecute(Boolean result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        if (myprogress.isShowing())
            myprogress.dismiss();
        if (result){
            Toast.makeText(mcontext, "I Finished",Toast.LENGTH_SHORT).show();
            yourActivity.this.finish();
        }
    }
}
于 2012-06-07T00:30:37.580 に答える