- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
public class Pages extends TabActivity {
public static TabHost host;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
host = getTabHost();
// много говнокода
}
}
public class Table extends Activity {
//много говнокода
@Override
protected void onResume() {
super.onResume();
if (!loading) {
loading = true;
new MainTask().execute();
}
}
private class MainTask extends AsyncTask<Void, String, Void> {
//безумнейший парсинг в donInBackground()
@Override
protected void onPostExecute(Void unused) {
//разбираемся с тем, что пришло - для начала отлавливаем ошибки в парсере.
if (!timeOut) {
AlertDialog dlg = new AlertDialog.Builder(TableOfGroups.this).setTitle(Data.lowConnectionTitle)
.setMessage(Data.lowConnectionText).setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
loading = false;
if (!update) {
Pages.host.setCurrentTab(Data.savePageIndex - 1);
}
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
loading = false;
if (!update) {
Pages.host.setCurrentTab(Data.savePageIndex - 1);
}
}
}).create();
dlg.show();
if (!update)
return;
}
//ещё около 150 строк подобной ловли
}
}
}
Задача (Android): имеется активити со вкладками (Pages), внутри него - дочерние активити. Если в активити Table на 4-й вкладке происходит косяк, то нужно показать диалог и перепрыгнуть на 1-ю вкладку.
QuickNick 30.01.2012 11:29 # 0
Хотел название класса поменять, но при передаче в AlertDialog.Builder() забыл :)
3.14159265 30.01.2012 14:30 # +1
Lure Of Chaos 30.01.2012 17:39 # 0
QuickNick 31.01.2012 10:18 # +1
Утечка памяти при выходе из приложения решается посредством System.exit(0);
absolut 31.01.2012 12:10 # −2
QuickNick 31.01.2012 17:48 # +3
http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
absolut 31.01.2012 19:13 # −1
QuickNick 01.02.2012 09:16 # 0
absolut 01.02.2012 11:28 # −2
QuickNick 02.02.2012 09:11 # +2
Lure Of Chaos 31.01.2012 22:59 # +3
в результате форма целиком несобираема мусорщиком.
случай сложнее - перезагрузка классов (байткод). поскольку у каждого Class есть ссылка на его ClassLoader, то рано или поздно получим OutOfMemoryError: PermGen space. С этим довольно трудно бороться, и этим страдают практически все фреймворки с live class reloading
TarasB 02.02.2012 09:40 # +2
Какой стыд...
roman-kashitsyn 02.02.2012 10:02 # +1
TarasB 02.02.2012 10:27 # 0
roman-kashitsyn 02.02.2012 11:12 # 0
Lure Of Chaos 02.02.2012 22:02 # 0
Lure Of Chaos 31.01.2012 22:31 # +1
решается посредством System.exit (0 );
php-style...
Vasiliy 01.02.2012 11:19 # 0
guest8 09.04.2019 12:36 # −999