2011-09-09 8 views
-1

Hei!私のアンドロイドアプリには、アプリバーコードスキャナを起動するボタンがあります。私はこのアプリを2分後に止めたいと思っています。これどうやってするの?しばらくしてアプリを停止するには?

これは私のコードです:

qrgame = (Button) findViewById(R.id.qrgame); 
qrgame.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(
         "com.google.zxing.client.android.SCAN"); 
       intent.setPackage("com.google.zxing.client.android"); 
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
       startActivityForResult(intent, 0); 
      } 
     }); 
+0

アクティビティを開始すると、開始されたアクティビティによってそのライフサイクルが制御されます。呼び出し元のアクティビティではありません。 – Shlublu

+0

これは私がこの1つを停止できないことを意味する? – Gabrielle

+0

「自然に」ではありません。あなたはアプリの高度なタスクキラーがやっていたようにアプリを殺すことができます(私はあまりうまくいけませんが、あなたはたくさんの例を見つけることができます)が、これは絶対に推奨されません。 – Shlublu

答えて

0

あなたはあなたのアプリケーションのonCreateで実行asyncTaskを作成することができます。そしてAsyncTaskに、あなたはあなたのアプリケーションを停止することができた後

Thread.slepp(120000). 

を書きます。

1

あなたは、あなたは、タイマーなどのスレッドができ、遅延時間のために、この方法

finishActivity(requestCode); 

に同じrequestcodeを渡す必要が

startActivityForResult(intent, 0); 

を使用して活動を開始することができますよう、あなたの活動を終了することができます。

または、開かれたアクティビティを閉じることができます。タイマ、スレッドを実装するだけで2分、またはお客様の要件に応じて

あなたに
finish(); 
+0

または、私はAsyncTaskを使うことができますか? – Gabrielle

+0

AsyncTaskを使用することはできますが、タイマーが必要で、AsynTaskはバックグラウンドプロセスに使用されています。イメージなどのデータをロードしたり、大きなファイルを読み込んだりするなどです。 – Pratik

0

メソッドを作成する上で、このコード

new Thread(){ 
public void run(){ 
try{ 
Thread.sleep(120000); 
} 
catch(Exception e){} 
} 
}.start(); 

があなたのスレッドをインポートすることを忘れていないか、またはあなたがelipseだけCRTL +シフト+ O

0

を使用する場合、私は同様の要件を持っていた入れ、何らかの方法で実行したいものを入れ、メソッドを開始と停止のように呼び出します。

//Say we place a switch case for the onClickListener 

case R.id.btnScan: 

    new CountDownTimer(120000, 120000) { 

     public void onTick(long millisUntilFinished) { 
     } 

     public void onFinish() {    
      stopScanning(); // Stop the application/function here 
      button.setText("Scanned"); 
     } 
    }.start(); 

    startScanning(); 

    break;