Android 活动可见后,如何运行代码?
我有一个有3个旋转器的活动。这些微调器通过一种大约需要1分钟才能完成的方法从web服务获取数据 我想先加载活动,在活动可见后,调用该web服务方法并加载数据。我已经分别测试了以下代码,但没有一个解决了我的问题。在这些示例中,应用程序将进入黑屏,当web服务操作完成时,它将变得可见Android 活动可见后,如何运行代码?,android,android-activity,visible,loaded,Android,Android Activity,Visible,Loaded,我有一个有3个旋转器的活动。这些微调器通过一种大约需要1分钟才能完成的方法从web服务获取数据 我想先加载活动,在活动可见后,调用该web服务方法并加载数据。我已经分别测试了以下代码,但没有一个解决了我的问题。在这些示例中,应用程序将进入黑屏,当web服务操作完成时,它将变得可见 @Override protected void onCreate() { //......... final Runnable r = new Runnable() {
@Override
protected void onCreate() {
//.........
final Runnable r = new Runnable()
{
public void run()
{
loadMyData();
}
};
Utilities.performOnBackgroundThread(r);
}
如果您得到的是黑屏,那么我会假设您的代码是在UI线程上运行的,而不是在后台运行的,这会导致UI挂起,直到工作完成 做背景工作的最佳解决方案之一是。使用此方法,您可以在onCreate()方法中调用它,完成后,它将为您向UI线程发出回调,您可以在其中显示数据
如果希望每次显示此活动时都运行此方法,请在onResume()中调用它。否则,在onCreate()中调用它。首先,您可能需要提高接受率,39%的接受率非常低 无论如何,您可能希望检查AsyncTask,它应该可以完成这项任务
通常,您需要在onPreExecute中初始化,在doInBackGround中进行联网,并将结果设置为OnPostExecute上的UI线程。希望这会有所帮助。在onCreate中,按照其他人的建议执行异步任务。确保先生成应用程序的内容,然后调用asyncTasks。您可以通过回调来控制微调器。使用
AssynchTask()
,您应该先调用super.onResume()
或各自生命周期方法中的任何生命周期方法,然后再调用您想要执行的其他特定方法。…我提到的代码是线程。为什么我的代码不起作用但AsyncTask起作用?:-??您的代码中一定有东西泄漏到UI线程并导致其挂起。
@Override
protected void onResume() {
new Thread() {
@Override
public void run() {
loadMyData();
}
}.start();
super.onResume();
}
@Override
protected void onStart() {
if (comesFromOnCreateMethod)
{
final Runnable r = new Runnable()
{
public void run()
{
loadMyData();
}
};
Utilities.performOnBackgroundThread(r);
}
comesFromOnCreateMethod = false;
super.onStart();
}
@Override
protected void onResume() {
if (comesFromOnCreateMethod)
{
final Runnable r = new Runnable()
{
public void run()
{
loadMyData();
}
};
Utilities.performOnBackgroundThread(r);
}
comesFromOnCreateMethod = false;
}