android用定时器检查互联网连接

android用定时器检查互联网连接,android,broadcastreceiver,android-broadcast,internet-connection,Android,Broadcastreceiver,Android Broadcast,Internet Connection,我尝试用定时器检查互联网连接。我想检查连接,例如每5秒。我写了一些代码,但我有错误,这是我的源代码 public class BroadCastSampleActivity extends Activity { TimerTask mTimerTask; Timer mTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我尝试用定时器检查互联网连接。我想检查连接,例如每5秒。我写了一些代码,但我有错误,这是我的源代码

public class BroadCastSampleActivity extends Activity {

TimerTask mTimerTask;
Timer mTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mTimerTask = new TimerTask() {

        @Override
        public void run() {

            ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            if (conMgr.getActiveNetworkInfo() != null
                    && conMgr.getActiveNetworkInfo().isAvailable()
                    && conMgr.getActiveNetworkInfo().isConnected()) {
                Toast.makeText(getApplicationContext(), "net Started",
                        Toast.LENGTH_LONG).show();

            }

        }
    };

    mTimer = new Timer();
    mTimer.scheduleAtFixedRate(mTimerTask, 1000, 5000);

}
}

这是我的日志错误 我做错了什么?如果有人知道答案,请帮助我 附笔
我想检查互联网连接,例如Facebook,我不知道我的解决方案(我是说定时器)是更好的方法。

你不能从非UI线程调用toast。所以,handler会帮你的。若您将在生产代码中删除Toast,则错误将自行消失。这里更多的是处理程序的解决方法

Handler handler = new Handler(); 
    mTimerTask = new TimerTask() {

            @Override
            public void run() {

                ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                if (conMgr.getActiveNetworkInfo() != null
                        && conMgr.getActiveNetworkInfo().isAvailable()
                        && conMgr.getActiveNetworkInfo().isConnected()) {

                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "net Started",
                            Toast.LENGTH_LONG).show();
                    }
                });


                }

            }
        };
替换

Toast.makeText(getApplicationContext(), "net Started", Toast.LENGTH_LONG).show();


你不需要时间…如果你添加时间来比较manualey,那么应用程序会因为时间而工作变慢,所以没有时间去做…没有一个开发者想让应用程序slo工作,而你是一个正在做的使应用程序工作变慢的人…manualey添加时间限制。。。。
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        Toast.makeText(getApplicationContext(), "net Started", Toast.LENGTH_LONG).show();
    }
});