Android:自动启动应用并在完成onCreate()时退出

时间:2012-06-06 09:11:23

标签: android oncreate

我想制作一个测试应用,在调用时,执行几行代码,然后自动退出。我想在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()”但是没有用。

任何人都可以提供帮助吗?

修改 我同意这个问题可能是由线程引起的。将在解决后发布我的答案。

5 个答案:

答案 0 :(得分:1)

我认为问题是您的AudioRecordThread与您的应用共享相同的流程。你可以在onCreate中定义调用this.finish()(经常这样做,从来没有遇到过问题),但这并不意味着你的AudioRecordThread与你的Activity同时被杀死。因此,如果没有关于您的线程的更多信息,并且如果它应该在您的活动完成时保持活力,我无法给您任何建议。如果您希望该线程处于活动状态,则在您的活动完成后,可以使用服务。

答案 1 :(得分:0)

尝试这个

完成正在onCreate()& onResume()..您的代码中还有另一个问题

 @Override
    protected void onResume()
    {
     super.onResume();
     finish();
    }

答案 2 :(得分: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();
}

答案 3 :(得分:0)

也许您要做的是服务? 看看这里:http://developer.android.com/reference/android/app/Service.html

答案 4 :(得分:0)

你可以在你的活动中使用AsynTask,juste把这个类放在你活动的同一个文件中

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