0

アプリのアクティビティとビューを作成しました。ビュー内には、サーバーのように機能するスレッドが 1 つあります。

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 を押したとき、アプリは破棄されませんでした。手動で破棄しましたが、スレッドはまだバックグラウンドで実行されています。backButton イベントをキャッチする必要があるため、これを使用しました

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

この関数は私のスレッドを停止できません。ビューから mainActivity を破棄する方法がわかりませんか? なにか提案を?

4

5 に答える 5

0

メソッドをオーバーライドし、そこでActivity.finish()占有されているリソース(server.shutDown()あなたの場合のように)をクリアする方がよいでしょう。

于 2012-04-04T08:01:24.967 に答える
0

呼び出すだけfinish()で、必要に応じて機能します

于 2012-04-04T09:39:33.583 に答える
0

このコードをメイン アクティビティに配置し、サーバー ビューからアクセスします

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

サーバービューでアクティビティオブジェクトにアクセスし、このコードを呼び出します

于 2012-04-04T07:55:33.223 に答える