我想从我的应用程序连接wifi热点。连接我的应用程序后转到后台。我想从我的应用程序计算wifi使用时间。我使用asynctask连接wifi热点,然后在后台发送我的应用程序。我成功完成了。但我的问题是计算wifi使用时间并显示它。我应该使用服务来计算背景时间。
public class ConnectWifiInAsync extends AsyncTask<Void, Void, Void> {
private ProgressDialog dialog;
private String mSsid, mPass, mMode ;
public ConnectWifiInAsync(String ssid, String pass, String mode){
super();
mSsid = ssid ;
mPass = pass;
mMode = mode ;
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(WifiScanActivity.this);
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("Connecting to WiFi. Please Wait.");
dialog.show();
}
@Override
protected void onPostExecute(Void result) {
/*connected = true;
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo conn = wifi.getConnectionInfo();
Context context = getApplicationContext();
CharSequence wifi_on = "Connected to " + conn.getSSID();
int duration = Toast.LENGTH_LONG;
Toast responseToast = Toast.makeText(context, wifi_on, duration);
responseToast.show();*/
if (dialog.isShowing()) {
dialog.dismiss();
}
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
WifiScanActivity.this.startActivity(i);
}
@Override
protected Void doInBackground(Void... voids) {
/*WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(true);*/
connectToAP(mSsid, mPass, mMode);
try {
Thread.sleep(3000);
} catch (Exception e) {
}
return null;
}
}
答案 0 :(得分:0)
您可以使用后台服务来计算或处理您的逻辑。
请参阅此处了解详情http://developer.android.com/training/run-background-service/create-service.html
答案 1 :(得分:0)
当然你必须使用服务来进行背景计算。另外,你的应用程序实例将被os杀死,计时器将被停止,here是服务文档,也是this example。在服务内部建议使用线程来处理你的计算。