レイアウト (アプリの「ホーム」画面) にMainActivity
関連付けられたアクティビティと、レイアウト (アプリの「概要」画面) に関連付けられたアクティビティの2 つがあります。main.xml
AboutActivity
about.xml
にいる間にAboutActivity
、Async
内のタスクがMainActivity
引き続き にアクセスしようとしますmain.xml
。その結果、アプリが動作しなくなります。
できる方法はありますか?
Async
タスクを「一時停止」しMainActivity
、ユーザーが元に戻ったときに「再開」します。AboutActivity
main.xml
またはバックグラウンドで引き続きアクセスしますAboutActivity
追加情報:
MainActivity
は起動アクティビティです。AboutActivity extends MainActivity
. ユーザーは、「バージョン情報」画面に移動するかAboutActivity
、オプション メニューを使用するように切り替えることができます。
内のAsync
タスクMainActivity
は、ユーザーの現在の場所をテキストビューに入れます。about.xml
静的テキストのみが含まれます。AboutActivity
表示するだけabout.xml
です。
アクティビティについて:
public class AboutActivity extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
}
}
主な活動:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Creating a new non-ui thread task to download Google place json data
PlacesTask placesTask = new PlacesTask();
// Invokes the "doInBackground()" method of the class PlaceTask
placesTask.execute(sb.toString());
}
/** A class, to download Google Places */
private class PlacesTask extends AsyncTask<String, Integer, String>{
String data = null;
// Invoked by execute() method of this object
@Override
protected String doInBackground(String... url) {
//make asynctask wait for debugger
//android.os.Debug.waitForDebugger();
try{
data = downloadUrl(url[0]);
}catch(Exception e){
Log.d(DEBUG,e.toString());
}
return data;
}
// Executed after the complete execution of doInBackground() method
@Override
protected void onPostExecute(String result){
TextView curLoc = (TextView) findViewById(R.id.CurrentLocation);
curLoc.setText(result);
}
}
}