나는 안드로이드에 대해 다소 새로운 편이며, 자바에 관해서는, 문제에 대한 대답이 간단한 것이라면 사과드립니다.AsyncTask를 실행하는 동안 Options Menu가 열린 상태로 유지됨
문제는 특정 메뉴 항목을 선택하면 HTTP 요청과 관련된 다소 긴 (2-3 초) 작업을 실행해야하며, 해당 작업을 주 스레드와 다른 스레드)를 실행 한 다음 AsyncTask에서 가져온 결과의 일부를 표시합니다.
AsyncTask가 실행되는 전체 시간 동안 메뉴가 열리는 것을 제외하면 모든 것이 정상적으로 작동합니다.이 문제를 피할 방법을 찾을 수 없습니다.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE,1,Menu.NONE,"Text");
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem mi) {
try {
String a = new AsyncTest().execute().get();
Toast.makeText(MainActivity.this,a, Toast.LENGTH_SHORT).show();
return true;
}
catch (Exception e) {
return false;
}
}
}
그리고 여기에 AsyncTask를 공용 클래스 AsyncTest가 {
AsyncTask를 확장입니다 : 나는 짧은 아니라 유사한 예를여기에 MainActivity 코드의 내 문제를 요약하려
@Override
protected String doInBackground(Void... params) {
long i;
for (i=0;i<100000000;i++);
return "Lol";
}
}
나는 전에 을 사용해 보았습니다. onOptionsItemSelected 직후에 메뉴를 닫기 전에 yncTask가 실행되었지만 작동하지 않았습니다.
Google에서 주제를 많이 찾지 못했습니다.