android:在后台app时计算值

时间:2015-11-25 08:20:28

标签: android background wifi background-process android-wifi

我想从我的应用程序连接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;
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用后台服务来计算或处理您的逻辑。

请参阅此处了解详情http://developer.android.com/training/run-background-service/create-service.html

答案 1 :(得分:0)

当然你必须使用服务来进行背景计算。另外,你的应用程序实例将被os杀死,计时器将被停止,here是服务文档,也是this example。在服务内部建议使用线程来处理你的计算。