2015-11-25 17 views
0

我想从我的应用程序连接wifi热点。连接我的应用程序后去背景。我想从我的应用程序计算WiFi使用时间。我使用asynctask连接wifi热点,然后在后台发送我的应用程序。我已经成功完成了。但我的问题是计算无线使用时间并显示它。我应该使用服务来计算背景中的时间。android:计算后台应用程序的值

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

简单的解决方法是,当您在后台发送应用程序时,获取当前时间并保存在SharedPrefs中。还要注册广播接收器'android.net.conn.CONNECTIVITY_CHANGE'。连接丢失时。从sharedPrefs获取时间并将其与启动时的时间进行比较。 –

回答

0

当然你必须使用的服务做后台计算。其他明智的你的应用程序实例将被OS杀死,并且定时器将被停止,here是服务的文档,也读取this example。里面的服务建议使用一个线程来处理你的计算。