powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / События
5 сообщений из 5, страница 1 из 1
События
    #38403296
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой вот сверх простой вопрос. Только начал разбираться с Java, есть опыт на Delphi, поэтому приведу аналогию.

Есть класс, у которого есть событие (Delphi):
Код: pascal
1.
2.
3.
4.
5.
  TMyClass = class
    ...
  public
    property OnMyEvent: TNotifyEvent ... ;
  end;



Теперь мы можем просто присвоить обработчик этому событию:
Код: pascal
1.
2.
  C := TMyClass.Create;
  C.OnMyEvent := MyEvent;



Как это реализовать в Java? Тоесть какой самый простой способ в Java добавить в свой класс событие?
...
Рейтинг: 0 / 0
События
    #38403319
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С такими вопросами лезь в книгу Хорстманн Кей, Корнелл Гари - Java 2. Библиотека профессионала. 7-е издание. Том 1 - Основы - 2007 Глава 8. Там чвсе что надо найдешь.
...
Рейтинг: 0 / 0
События
    #38406255
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покритикуйте пожалуйста код :)
Суть следующая: при нажатии на кнопку в отдельном потоке отправляем HTTP запрос, результат надо вернуть в контекст основного потока. Как-то всё "накручено" слишко. Можно упростить?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public class ActivityLogin extends Activity {

    public void btnLoginOnClick(View v) {

    	NotifyEvent ne = new NotifyEvent() 
    	{

		@Override
		public void run() {
			if (data == null) return;
			final NetAdminAPIRequest req = (NetAdminAPIRequest)data;
			runOnUiThread(new NotifyEvent()
			{
				@Override
				public void run() {
					Log.i("NetAdmin", req.errorStr);
				}
			});
			
		}
    	};
    	
    	try
    	{
    		api.reqLogin("admin", "wer", ne);
    	} catch (Throwable e) 
    	{
    		Log.e("NetAdmin", e.toString());
    	}
    }
    
} 



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public class NetAdminAPI {
	
	public void reqLogin(String login, String password, NotifyEvent onDone) throws Throwable {
		
                   ...

		final NetAdminAPIRequest req = new NetAdminAPIRequest();
		req.onDone = onDone;

		new Thread()
		{
			public void run()
			{
                                         ...
				
				if (req.onDone != null)
				{
					req.onDone.data = req;
					req.onDone.run();
				}
			}
		}.start();
	}
}



Код: java
1.
2.
3.
4.
5.
public class NetAdminAPIRequest {
	public String response = "";
	public String errorStr = "";
	public NotifyEvent onDone = null;
}



Код: java
1.
2.
3.
public abstract class NotifyEvent implements Runnable {
	public Object data = null;
}
...
Рейтинг: 0 / 0
События
    #38406267
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Android? AsyncTask?
...
Рейтинг: 0 / 0
События
    #38406322
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAndroid? AsyncTask?
О, вроде то что нужно :) Большое спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / События
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]