连接到互联网时在主屏幕上显示进度轮 [Android]

Posted

技术标签:

【中文标题】连接到互联网时在主屏幕上显示进度轮 [Android]【英文标题】:Displaying a progress wheel on main screen while connecting to internet [Android] 【发布时间】:2016-04-12 05:32:09 【问题描述】:

我想在徽标屏幕中显示一个在连接到互联网时加载的进度条。 我正在使用下面的课程来检查互联网连接:

 public class AppStatus 
    public boolean isNetworkAvailable(final Context context) 
        final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
        return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected();
    

带有进度条的屏幕代码为:

public class logo_activity extends AppCompatActivity 
    private ProgressBar mProgress;
    private int mProgressStatus = 0;
    private Handler mHandler = new Handler();
    private AppStatus con = new AppStatus();

    @Override
    protected void onCreate(Bundle savedInstanceState) 

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_logo_activity);
        mProgress = (ProgressBar) findViewById(R.id.progressBar);

        new Thread(new Runnable() 
            public void run() 
                if (con.isNetworkAvailable(getApplicationContext()))
                
                    mProgressStatus += 10;
                   //user authentication in background.
                
                else 
                    mProgressStatus +=10;
                   // Display an alert dialog box to connect to internet by launching into settings activity. 
                

                // Update the progress bar
                mHandler.post(new Runnable() 
                    public void run() 
                        mProgress.setProgress(mProgressStatus);
                    
                );
            
        ).start();

    

我面临的问题是警报对话框未显示,当我将活动启动到设置并退出而不打开互联网时,屏幕仅停留在加载屏幕上。 也有人可以为它写一个 asynctask 方法。我似乎无法绕过它。

谢谢。

【问题讨论】:

【参考方案1】:

问题是您创建的新线程仍然在 UI 线程上运行,因此由于您的 UI 被锁定,因此没有显示任何内容。您需要使用 AssyncTask。 here 是一个教程。

【讨论】:

那我该怎么办?我将查看关于异步任务的 tut。我应该只对此类任务使用异步任务吗? @KavachChandra 运行时间过长的任务(例如访问互联网)不得在 UI 线程上运行,否则您会看到屏幕延迟。相反,您必须异步运行它们。处理线程(并发)是一个有点复杂的任务,所以android已经提供了AssyncTask和FutureTask等预置类来简化并发。每次异步时,您最好使用 AssyncTask。 @KavachChandra 如果对您有帮助,请接受我的回答。

以上是关于连接到互联网时在主屏幕上显示进度轮 [Android]的主要内容,如果未能解决你的问题,请参考以下文章

Spark 独立集群 - 从站未连接到主站

使用 PKRevealController 时在前视图上推送新视图

如何在 iOS 上获取外部屏幕列表并连接到

连接到互联网时刷新应用程序

尝试连接到服务器时带有异步任务的进度条

未连接到互联网时如何显示警报? iOS