首页 > 解决方案 > Android 更好的方法来等待服务创建

问题描述

我面临一个问题:

我的登录任务在第一次运行时需要一段时间......大约 30-60 秒......

这是我现在无法解决的性能问题,所以我正在尝试以最好的方式处理......因为 90% 的用户不会等待 60 秒盯着屏幕看进度条加载,所以我采用了login一种方法我的服务在后台运行,因此用户可以转到任何其他应用程序并且仍然可以。

该服务是在此期间创建的,Application onCreate并且此过程可以正常工作...

问题:

为了节省用户时间,在第一次登录成功后我缓存了一些认证数据,当用户下次使用该应用程序时,登录表单已经填写完毕,所以如果他走得很快并点击登录,android系统没有创建MyService然而,调用MyService.login(params)抛出空指针

由于我无法控制android在应用程序期间创建活动/服务的顺序,oncreate有没有比简单地放置一个带有等待服务准备好的新线程的循环更好的方法来解决这个问题?

==========更新==========

只是为了让事情清楚

public class App extends MultiDexApplication{

    //many stuff

    public void onCreate(){
        Intent intent = new Intent(this, MyService.class);
        startService(intent);
        //many other stuff
    }
}

public class LoginActivity extends AppCompatActivity{

    protected void onCreate(Bundle savedInstanceState) {

        //try to recover auth data from cache
        Auth a = getCachedAuth();
        if(a !=null)
            MyService.getInstance().login(a);

        //else wait for user input auth data
    }
}

MyService.getInstance()null直到android系统从我给出的意图实例化它......

但正如我所说,我无法控制android决定运行其任务的顺序......所以,有时服务首先被实例化,有时活动是......如何处理?

标签: android

解决方案


推荐阅读