有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java连续internet签入后台Android

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

我在扩展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;
        }
    }
}

而且它不能正常工作。。。有什么建议或提示吗


共 (3) 个答案

  1. # 1 楼答案

    您也可以尝试此服务类。只需将时间间隔设置为秒,并将url设置为ping:

    Android Check Internet Connection

    只需记住将服务添加到清单文件,并添加权限

  2. # 3 楼答案

    你完全没有说明它是如何失败的

    让我猜两种可能性:

    1. 它会阻止所有后续的异步任务。使用execute(...)方法提交的异步任务将在后续任务启动之前运行到完成。由于此任务将永远运行,因此它将阻止后续任务
    2. 这项任务最终被扼杀。当进程需要空间时,Android将终止进程,并且停止异步任务

    看看AlarmManager。您可以使用它来安排重复的任务