gpt4 book ai didi

java - 执行onTaskRemoved后应用崩溃

转载 作者:行者123 更新时间:2023-12-03 17:06:43 25 4
gpt4 key购买 nike

我编辑了问题,所以它不是重复的
this

在MainActivity中,我正在执行一些文件操作。这些操作在单个文件中处理。因此,在那之后,我通过ForceShut的意图传递了文件。这是因为我想检测用户何时从最近的应用程序中刷出该应用程序,也就是说调用了onTaskRemoved(),并将该文件删除到其中。现在到目前为止没有问题。该文件已通过意图成功传输,并且从日志中可以看到onTaskRemoved()被调用。当我滑动应用程序时,我尝试在onTaskRemoved()中删除的文件也被成功删除,并且其中的日志都运行良好,直到显示“Application Terminated”。但是几秒钟后,我收到了崩溃警报,说应用程序已停止,甚至从最近的应用程序中删除了该应用程序。崩溃虽然连续出现两次,但没有崩溃发生。可能是什么问题呢 ? :(

我的MainActivity类看起来像这样

public MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//several file operations go here <--
//removed for simplification
Intent mIntent = new Intent(this, ForceShut.class);
mIntent.putExtra("file", file);
startService(mIntent);
}
}

和ForceShut类看起来像这样:
public class ForceShut extends Service {
File file;

@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId){
file =(File) intent.getExtras().get("file");
return START_STICKY;
}

@Override
public void onTaskRemoved(Intent rootIntent){
if(file.exists())
file.delete();
}
}

编辑

因此,正如@CommonsWare所建议的那样,我忘记了查看LogCat,而是仅查看“运行”选项卡日志。所以我看了一下,似乎有一个空指针异常:
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.os.Bundle android.content.Intent.getExtras()”,因此即使再次刷回onStartCommand后,它看起来也是如此。为什么即使刷了应用程序后服务仍可以重新开始?

编辑2
正如@Andreas所指出的,问题不是重复的。我编辑了问题。但是我自己找到了解决方法。我用stopSelf()关闭了服务,因为将应用程序从“最近状态”中滑出似乎并没有摆脱偶尔重启的服务。无论如何希望这对任何人有帮助

最佳答案

Why could the service start over even after app was swiped ?



您已经启动了“粘性”服务。 The system will automatically restart any sticky service until it is explicitly stopped.
 @Override
public int onStartCommand(Intent intent, int flags, int startId){
file =(File) intent.getExtras().get("file");
return START_STICKY;
}

我看不到使用 stopSelf()实际停止它的位置。

至于您的NullPointerExceptions,只需在尝试读取它们之前检查对象是否存在。
if (intent != null && intent.hasExtra("file"))
file =(File) intent.getExtras().get("file");

关于java - 执行onTaskRemoved后应用崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48388826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com