gpt4 book ai didi

android - 实现 AsyncTask 线程的问题

转载 作者:行者123 更新时间:2023-11-30 04:32:52 26 4
gpt4 key购买 nike

我有以下问题...我正在我的 android 应用程序中实现一个QR 码 游戏...这是通过启动此intent 来完成的:

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

换句话说,我启动了 Barcode Scanner 应用程序。

我想做的是启动这个应用程序,无论用户是否开始扫描条形码,应用程序都会在两分钟后自动关闭。

当然,如果用户不关闭它。

我试过像这样实现 AsyncTask 线程:

在 onCreate() 中

initTask=new InitTask();
initTask.execute();

在 onCreate() 之外

private class InitTask extends AsyncTask<Void,Void,Void>{

protected Void doInBackground(Void...unused){

new Runnable() {
@Override
public void run() {
try {
Thread.sleep(20000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
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);
}
}.run();
this.cancel(true);


return null;

}

}

在 onCreate() 之外

   public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//..........
}

问题是应用程序已打开,但 2 分钟后不会自动关闭。有人知道我怎样才能做到这一点吗?

最佳答案

更新

private class InitTask extends AsyncTask<Void,Void,Void>{
@Override
protected void onPreExecute()
{
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, 1515);
}
protected Void doInBackground(Void...unused){

try
{
Thread.sleep(20000);
}
catch(Exception e)
{
System.out.println(e);
}
return null;

}
@Override
protected void onPostExecute(Void result)
{

finishActivity(1515);

}


}

Activity 结果

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 1515) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
System.out.println("it is ok");
// Handle successful scan
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
System.out.println("it is cancel");
}
}
}

关于android - 实现 AsyncTask 线程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7384339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com