连接到互联网时在主屏幕上显示进度轮 [Android]
Displaying a progress wheel on main screen while connecting to internet [Android]
我想在徽标屏幕中显示一个在连接到 Internet 时加载的进度条。
我正在使用下面的 class 检查互联网连接:
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();
}
}
我面临的问题是警报对话框没有显示,当我启动 activity 进入设置并在没有打开互联网的情况下退出时,屏幕只停留在加载屏幕上。
也有人可以为它写一个 asynctask 方法。我似乎无法绕过它。
谢谢。
问题是您创建的新线程仍在 UI 线程上运行,因此没有任何显示,因为您的 UI 已被锁定。您需要使用 AssyncTask。 here 是教程。
我想在徽标屏幕中显示一个在连接到 Internet 时加载的进度条。 我正在使用下面的 class 检查互联网连接:
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();
}
}
我面临的问题是警报对话框没有显示,当我启动 activity 进入设置并在没有打开互联网的情况下退出时,屏幕只停留在加载屏幕上。 也有人可以为它写一个 asynctask 方法。我似乎无法绕过它。
谢谢。
问题是您创建的新线程仍在 UI 线程上运行,因此没有任何显示,因为您的 UI 已被锁定。您需要使用 AssyncTask。 here 是教程。