我想制作一个测试应用,在调用时,执行几行代码,然后自动退出。我想在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()”但是没有用。
修改 我同意这个问题可能是由线程引起的。将在解决后发布我的答案。
答案 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();
}
}
}