저는 Android가 비교적 새롭습니다. AsyncTask를 사용하려고하지만 스레드가 실행 된 후 내 응용 프로그램이 강제로 닫습니다. 내 비동기 스레드 내 안드로이드 센서에서 데이터를 저장하는 서버 쪽에서 PHP를 실행. 어떤 도움을 주시면 감사하겠습니다.Android : AsyncThread가 내 앱을 닫으려고합니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.....
final FuncionsActivity functions = new FuncionsActivity();
if(something)
functions.execute(nameValuePairs);
.....
}
private class FuncionsActivity extends
AsyncTask<ArrayList<NameValuePair>, Integer, Integer > {
@Override
protected Integer doInBackground(ArrayList<NameValuePair>... data) {
// 1) Connect via HTTP. 2) Encode data. 3) Send data.
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new
HttpPost("http://.../saveCoordinates.php");
//HttpPost httppost = new
httppost.setEntity(new UrlEncodedFormEntity(data[0]));
HttpResponse response = httpclient.execute(httppost);
Log.i("postData", response.getStatusLine().toString());
this.onPostExecute(null);
//Could do something better with response.
}
catch(Exception e)
{
Log.e("log_tag", "Error1: " + e.toString());
}
return 0;
}
protected void onProgressUpdate(Integer... item){
Log.d("TestP", item[0] + " item has been processed");
}
protected void onPostExecute(Integer result){
Log.d("TestP", "AsyncTask returned : " + result);
}
}
@Override
protected void onDestroy() {
super.onDestroy(); // Move to bottom
//System.runFinalizersOnExit(true);
}
}
게시 로그 예외 스택. – kosa
우, AsynchTask의 하위 클래스를 "Activity"라고 부르지 말고, Android에서 Activity는 보통 completly 다른 것을 참조하십시오. – Ixx
하하, 나는 S.O가 자동으로 오류에 대한 입력 섹션을 가져야한다고 생각하여 10 표 이하의 사용자는 추가 할 때까지 게시 할 수 없습니다. 따라서 새로운 사용자가 오류 로그를 게시하지 않았다고 비난 할 수는 없습니다. 그러나 안드로이드가 당신에게 잘못된 것을 말한 것을 아는 것이 도움이 될 것입니다. – Andy