2016-10-19 3 views
0

У меня есть активность:Связь между активностью и отдельный класс

public class MyActivity extends Activity { 

    @Override 
    protected void onDestroy() { 
// TODO: send event to other class 
    } 
} 

и отдельный класс:

public class MyClass{ 
     MyClass(Context context){ 
      // I have the context of activity 
     } 

// This needs to be called by MyActivity in all other instantiates 
     void onActivityDestroy(){ 

     } 
    } 

MyClass конкретизируется в других местах, и я хочу onActivityDestroy называться в этих конкретизирует. Место, где создается экземпляр MyClass, недоступно.

Я ищу решение, которое использует интерфейсы, слушатель, сообщения ... но не статические поля.

+0

Почему вы не звоните MyClass CS = новый MyClass (); cs.onActivityDestry(); в вашей функции onDestroy(). – Rishi

+0

MyClass создается в другом месте, и мне нужно запустить onActivityDestroy. Не в созданных мной экземплярах. – chris

+0

Я не думаю, что это то, что желаемое поведение, они хотят назвать метод onDestroy MyActivity, а не MyClass. –

ответ

0

Вы можете сохранить список MyClass экземпляров на уровне приложений, затем получить доступ к этому списку в OnDestroy способе деятельности. И выполните команду onActivityDestroy() каждого экземпляра.

Вы должны поддерживать список экземпляров в своем классе приложений, всякий раз, когда создается экземпляр MyClass, вы толкаете этот экземпляр в список поддерживается на Application класса

// this is to push the MyClass instance. 
Context.getApplication().getMyClassInstanceList().add(new MyClass()); 

public class MyActivity extends Activity { 

    @Override 
    protected void onDestroy() { 
    List<Myclass> myClassObjects = Context.getApplication.getMyClassInstaceList(); 

    for(Myclass myclass : myClassObjects) 
    { 
      myclass.onActivityDestroy(); 
    } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^