android - 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决定运行其任务的顺序......所以,有时服务首先被实例化,有时活动是......如何处理?
解决方案
推荐阅读
- c++ - 给定日期前第 n 天后的逻辑
- reactjs - 如何处理 nextJS 中的 useRouter()s 异步问题
- python - 没有名为 portaudio aws lambda 的模块
- scala - 用于 JDBC 数据库连接的 Akka Projection 配置
- node.js - Node.js 应用程序的 Github 操作缓存不起作用
- java - Java 使用线程更高效地处理字符串
- amazon - 用问答 excel 文件 amazon lex 喂聊天机器人
- html - Swift - 如何使用正则表达式查找一个 URL 并将其替换为另一个
- python - 根据 discord.py 中的第一个输入接受第二个输入
- php - Yii2 与 SBADMIN - Bootstrap 4,在侧边栏中生成菜单