0

Я создал Activity и View для своих приложений. Внутри представления у меня есть один поток, который действует как сервер.Как уничтожить активность из вида? или как уничтожить их обоих?

public class MainActivity extends Activity { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new MainView(this)); 
} 
} 

public class ServerView extends View { 

public ServerView(Context context) { 
    super(context); 
     server.startServer(); 
} 
} 

, когда я нажал BackButton, Мои приложения не был destroyed.I уничтоженного это вручную, но мой поток все еще работает в фоновом режиме. Мне нужно поймать backButton, поэтому я использовал это

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
    server.shutDown(); 
} 
return super.onKeyDown(keyCode, event); 
} 

Эта функция не может остановить мою тему. Я не знаю, как уничтожить мою mainActivity с точки зрения? любое предложение?

ответ

0

положить этот код в основной деятельности и доступ к нему с вашей точки зрения сервера

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     server.shutDown(); 
    } 
    return super.onKeyDown(keyCode, event); 
    } 

доступа к объектам деятельности с вашей точки зрения сервера и вызвать этот код

0

Лучше переопределить метод Activity.finish() и очистить любой оккупирована ресурсы (например, server.shutDown() в вашем случае) есть.

0

просто позвоните finish() он будет работать, как вы хотите

0

вы можете использовать отделку() метод, чтобы уничтожить вашу деятельность. И уничтожить поток, работающий в фоновом режиме использования оператора возврата или,

if(thread != null) 
{ 
    Thread t1 = thread; 
    thread = null; 
    t1.interrupt(); 
} 
0

На мой взгляд, если вы хотите, чтобы уничтожить активность, вы можете использовать Activity.finish(). если вы хотите уничтожить любую нить, вы можете System.exit(0);

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