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をビューから破壊する方法を知らないのですか? 提案がありますか?

答えて

0

主な活動には、このコードを入れて、アクセスして、サーバービューから

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

アクセスアクティビティオブジェクトサーバービューで、あなたがより良いActivity.finish()メソッドをオーバーライドして、任意の占有を解除したい

0

このコードを呼び出しますリソース(あなたの場合はserver.shutDown()など)があります。

0

は、単にあなたがあなたの活動を破壊する仕上げ()メソッドを使用することができます

0

をしたいと、それは動作しますfinish()呼び出します。そして、あなたは活性を破壊したい場合は、Activity.finish()を使用することができ、私の意見では、

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

を背景に使用するreturn文であなたのスレッドの実行を破壊したりします。 スレッドを破棄したい場合は、System.exit(0);

関連する問題