【问题标题】:putExtra to Service class stops when app is closed当应用程序关闭时,服务类的 putExtra 停止
【发布时间】:2019-10-18 03:11:59
【问题描述】:

我是 java 新手,我在 AndroidStudio 中有一个名为 LaunchApp.class 的 Activity 和一个名为 MyService.class 的 Service。我以这样一种方式制作应用程序,即当应用程序完全关闭或刷走时,该服务应该在后台继续正常运行。我通过putExtra 方法将变量从 LaunchApp.class 发送到 MyService.class,如下所示:

// In  LaunchApp.class under onCreate method    
Intent intent = new Intent(LaunchApp.this,MyService.class);
intent.putExtra("myVar",loginName.getText().toString());
startService(intent);

然后我在 Service.class 中收到如下代码:

//under onStartCommand method
String sessionVar = intent.getStringExtra("myVar");
Toast.makeText(MyService.this, sessionVar, Toast.LENGTH_SHORT).show();

代码运行良好,我收到了“myVar”字符串。但是当应用程序关闭或从屏幕上滑开时,变量会停止并导致应用程序崩溃。我认为原因是这种将变量从 Activity 传递到服务的方式,因为如果我尝试在 MyService.class 中使用本地字符串变量,即使完全关闭它,应用程序也能正常运行。请帮忙。

【问题讨论】:

  • 可以放崩溃日志吗?
  • 崩溃日志给了我这个消息:“java.lang.RuntimeException: Unable to start service staryte.com.sTaryte.TimerService@af00c57 with null: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' 在空对象引用上"

标签: java android service background-service


【解决方案1】:

我在不同来源搜索后得到了解决方案..为了在杀死应用程序后继续获取Service中变量的值,您需要使用

return START_REDELIVER_INTENT;

而不是使用

return START_STICKY;

在 onStartCommand 中。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    相关资源
    最近更新 更多