连接到互联网时在主屏幕上显示进度轮 [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]的主要内容,如果未能解决你的问题,请参考以下文章