gpt4 book ai didi

java - 在后台持续检查互联网 - Android

转载 作者:行者123 更新时间:2023-12-02 05:44:31 24 4
gpt4 key购买 nike

我已经编写了一个类来检查是否有互联网连接,现在我想每 1-2 秒检查一次是否有互联网以关闭特殊提示。

我在 Activity 内部添加了扩展 AsyncTask 的类,并在此类中执行此操作,这是代码:

public class NoInternet extends Activity {

private ConnectionDetector cd;
public Boolean isInternetPresent;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nointernet);

new RefreshTask().execute();
}

public void closeActivity() {
super.onBackPressed();
overridePendingTransition(0, 0);
}

@Override
public void onBackPressed() {
}

class RefreshTask extends AsyncTask {

@Override
protected void onProgressUpdate(Object... values) {
super.onProgressUpdate(values);
String text = String.valueOf(System.currentTimeMillis());
isInternetPresent = cd.isConnectingToInternet();

if(isInternetPresent) {
closeActivity();
}

}

@Override
protected Object doInBackground(Object... params) {
while (!isInternetPresent) {
try {
//sleep for 1s in background...
Thread.sleep(1000);
publishProgress();
} catch (InterruptedException e) {
e.printStackTrace();

};
}
return null;
}
}
}

它无法正常工作......有什么建议或提示吗?

最佳答案

这是错误的做法。首先,如果您始终需要在后台执行某些操作,请使用线程,而不是异步任务。它不仅更适合,而且使用 AsyncTask 会破坏其他 AsyncTaks,因为它们默认在单个线程上执行。

其次,通知比轮询更节省电池和 CPU 效率。使用广播接收器 http://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION而不是轮询连接状态。

关于java - 在后台持续检查互联网 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222909/

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