0

我爲我的應用程序創建了一個活動和一個視圖。 在視圖內部,我有一個像服務器一樣的線程。如何從視圖中摧毀活動?或者如何摧毀他們?

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(); 
} 
} 

當我按下按鈕時,我的應用程序wasnt destroyed.I手動銷燬它,但我的線程仍在後臺運行。我需要趕回巴頓事件,所以我用這個

@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

你可以使用結束()方法來摧毀你的活動。並摧毀你的線程運行在後臺使用return語句或

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

在我看來,如果你想消滅活動,您可以使用Activity.finish()。 如果你想銷燬任何線程,你可以System.exit(0);