【问题标题】:How to create activity for browse a url with onpause and onresume?如何使用 onpause 和 onresume 创建用于浏览 url 的活动?
【发布时间】:2025-12-09 06:30:01
【问题描述】:

你能帮我解决这个问题吗?

如果 Internet 连接可用,如何创建一个以 oncreate 方法运行 url 的活动?

我想每 5 秒检查一次 Internet 连接是否可用,如果 Internet 连接断开,它只会提示一次对话框。

如果 Internet 连接到来,则活动将在会话关闭的地方恢复

下面是我的代码:

    public class MainActivity extends Activity {

private String URL="http://www.moneycontrol.com/";

private Handler mHandler = new Handler();

private boolean isRunning = true;

private TextView textlabel=null;    

public WebView webview=null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textlabel=(TextView)findViewById(R.id.textlabel);
        displayData();

    }

    private void Chekstate() {

    new Thread(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while (isRunning) {
                try {
                    Thread.sleep(1000);
                    mHandler.post(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            // Write your code here to update the UI.
                            displayData();
                        }
                    });
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }
        }
    }).start(); 

    }


    @SuppressWarnings("deprecation")
    private void displayData() {
        ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nf=cn.getActiveNetworkInfo();
        if(nf != null && nf.isConnected()==true )
        {
           textlabel.setText("Network Available");
           Webview();
        }
        else
        {
           textlabel.setText("Network Not Available");
           final AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
           alertDialog.setTitle("Intenet Connecction");
           alertDialog.setMessage("Internet Connetion is not available now.");
           alertDialog.setButton(" OK ", new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                alertDialog.dismiss();
            }
        });
           alertDialog.show();
        }       
    } 


      @Override
        protected void onResume() {
            super.onResume();

        }

        @Override
        protected void onPause() {
            super.onPause();

        }

    @SuppressLint("SetJavaScriptEnabled")
    private void Webview() {
        webview= (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebViewClient(new WebViewClient());
        webview.loadUrl(URL);
        webview.setInitialScale(1);
        webview.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setUseWideViewPort(true);

    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

【问题讨论】:

    标签: android android-activity webview onresume


    【解决方案1】:

    要检查互联网连接,您可以使用以下方法。

    在清单中添加以下权限

     <uses-permission android:name="android.permission.INTERNET"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    

    使用处理程序

    Handler mHandler = new Handler();
    boolean isRunning = true;
    

    然后,从你的 onCreate() 方法中使用这个线程:

    new Thread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (isRunning) {
                    try {
                        Thread.sleep(5000);
                        mHandler.post(new Runnable() {
    
                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                // Write your code here to update the UI.
                                displayData();
                            }
                        });
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                }
            }
        }).start(); 
    

    然后,声明你的处理程序每​​ 5 秒调用一次的方法:

        private void displayData() {
        ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo nf=cn.getActiveNetworkInfo();
        if(nf != null && nf.isConnected()==true )
        {
            Toast.makeText(this, "Network Available", Toast.LENGTH_SHORT).show();
            myTextView.setText("Network Available");
        }
        else
        {
            Toast.makeText(this, "Network Not Available", Toast.LENGTH_SHORT).show();
            myTextView.setText("Network Not Available");
        }       
    } 
    

    要停止线程调用这个:

       isRunning = false;
    

    您也可以使用以下内容。但它不会每 5 秒检查一次连接性

    public class CheckNetwork {
    private static final String TAG = CheckNetwork.class.getSimpleName();
    public static boolean isInternetAvailable(Context context)
    {
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
    context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
    
    if (info == null)
    {
         Log.d(TAG,"no internet connection");
         return false;
    }
    else
    {
        if(info.isConnected())
        {
            Log.d(TAG," internet connection available...");
            return true;
        }
        else
        {
            Log.d(TAG," internet connection");
            return true;
        }
       }
     }
    }
    

    在 onCreate() 中的活动中

    if(CheckNetwork.isInternetAvailable(MainActivtiy.this))  //if connection available
    {
    
    }
    

    http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html

    您可以使用广播接收器。当连接丢失时,系统会广播。但我建议不要使用广播接收器。

    【讨论】:

    • 感谢您的帮助我已经使用了此代码。但是我想在网络消失时暂停活动并在网络出现时恢复。
    • 活动在后台时暂停。假设您在活动中显示一个对话框。对话框在前台。活动进入后台。当您关闭对话框时暂停和恢复。浏览链接以更好地理解developer.android.com/guide/components/…
    • 您可以覆盖这些方法。回调方法。手动是什么意思?
    • 我的意思是说我运行一个像 google.com 这样的 URL 并搜索“Raghunandan”然后 Internet 连接消失了,它会在此之后立即显示警报,当 Internet 连接到来时它一定是 privious 页面的意思“Raghunandan”的搜索结果。
    最近更新 更多