gpt4 book ai didi

java - getExtra 使服务中的应用程序崩溃

转载 作者:行者123 更新时间:2023-11-30 11:30:44 25 4
gpt4 key购买 nike

我进行了很多搜索并尝试了多种方法,但找不到任何可以避免我的错误的方法。

我正在为我的学习开发应用程序,我的 MainActivity 中有一个字符串,然后我在我的服务中调用它。我试过这样的事情:

下一个进入我的 myService.class

//在我扩展服务的myService.class中

public class myService extends Service{

AlarmManager manager;
PendingIntent pintent;
String te;


@Override
public void onCreate()
{
manager = (AlarmManager)(this.getSystemService(Context.ALARM_SERVICE));
pintent = PendingIntent.getBroadcast( this, 0, new Intent("blahblah"), 0 );}

@Override
public int onStartCommand(Intent intent, int flags, int startid)
{

super.onStartCommand(intent, flags, startid);
te = intent.getStringExtra("tst"); //if I change this line to te = "something", everything goes fine
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive( Context context, Intent intent )
{
Toast.makeText(getApplicationContext(),te, Toast.LENGTH_SHORT).show();
}
};
this.registerReceiver(receiver, new IntentFilter("blahblah") );

// set alarm to fire 30 min and waits 2 min
manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000*30*60, 1000*2*60, pintent);
return START_STICKY;}

public IBinder onBind(Intent p1)
{
// TODO: Implement this method
return null;
}

这里的代码运行完美,但是当我退出我的应用程序时,它崩溃了。 1 分钟后,我的设备再次显示我的应用程序崩溃,确认我的应用程序“成功”运行到后台。它有什么问题?我还了解到我可以使用 IntentService 而不是 Service,后者更适合长时间任务,它们之间有什么区别?

编辑***

我收到以下错误:java.lang.NullPointerExeption。所以我改变了这个:

te = intent.getStringExtra("tst");

对此:

尝试 { te = intent.getStringExtra("tst"); } catch (NullPointerException e) {}

当我更改它时,我的应用程序会出现任何错误,但问题是:我需要从我的 MainActivity 中检索我的字符串,当我关闭我的应用程序时,我的服务运行没有错误,但我的“te”字符串取空值,什么我可以在我的服务中“保存”我的字符串,以便能够使用它并在我关闭我的应用程序后继续显示“工作”消息吗?我应该使用 SharedPreferences 吗?

希望我说清楚了。

最佳答案

IntentService 不同于Service

IntentService Self 在完成任务时终止服务。而 Service 会一直运行,除非你杀死它。

根据我的编码经验,我只会将 IntentService 用于运行几秒钟的小任务,将 Service 用于长时间运行的任务并根据需要调用 StopSelf()

欢迎贴出日志来解答你的问题

关于java - getExtra 使服务中的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17649952/

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