- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我进行了很多搜索并尝试了多种方法,但找不到任何可以避免我的错误的方法。
我正在为我的学习开发应用程序,我的 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/
我正在开发一个 Android 应用程序,它允许我在 CreateActivity 中创建一个事件,然后通过 Bundle 和 putExtras() 将数据从 CreateActivity 传递到
我进行了很多搜索并尝试了多种方法,但找不到任何可以避免我的错误的方法。 我正在为我的学习开发应用程序,我的 MainActivity 中有一个字符串,然后我在我的服务中调用它。我试过这样的事情: 下一
我的应用设计有点不同.. Activity--> Activity---> B ----> Activity c ---- Activity D 之后它应该像 ActvityD--> Activity
好的 所以我想使用 getextrand putextra 方法将值从一个 Activity 传递到另一个 Activity 。 在我想要接收数据的第二个 Activity 中,充满了按钮和 Text
我正在闹钟,服务是通过闹钟启动的。我希望服务接收额外数据,因此通过谷歌搜索我将标志设置为 Intent.FILL_IN_DATA。下面是我的代码。(只显示重要部分)(我有几种报警方式,调用不同的服务)
我在两个 Activity 之间传递值并像这样获取值: Bundle extras = getIntent().getExtras(); if (extras != null) {
我想将我的对象putExtra()放入 Intent 中,然后将其发送到常驻服务并让它进一步处理该对象。 我已经实现了 Parcelable 等,并且我已经完成了 putExtra() 代码。现在我遇
我有一个带有 onItemClick 方法的 fragment ,在该方法中我调用另一个 Activity 并传递 id 参数: public class MoviesListFragment ext
我是 android 世界的新手,所以我开始通过创建一个“Keep”应用程序来练习。因此,正如您想象的那样,我可以添加注释。问题就在这里,我的主要 Activity 在这里: @Override pr
这是我的代码。 在我的主 .java 文件中。 public void showQuiz (View view){ Username = (EditText) findViewById
Bundle extras = intent.getExtras(); if (extras != null) { Toast.makeText(context, "Message rec
所以,我开始 MainActivity.java 有以下代码。 @Override protected void onCreate(Bundle savedInstanceState) { s
在一个类中,我在 onCreate 方法之外声明了以下变量: Double isowei2 = 9.36; Double iso2 = 10.54; 在 onCreate 方法中,我有这个: fin
是否可以通过 Intent 将日历对象从一个 Activity 传递到另一个 Activity ?我对 hasExtra("startDate") 是正确的,但我无法获取对象本身......对于初学者
我有一个严重的问题。在我的 Android 应用程序中,我有这段代码: 类:MessagingService.class public void onMessageReceived(RemoteMes
正在开发支持 GCM 的应用程序,我可以接收消息。但是格式显示为 Message: Bundle[{message=test, android.support.content.wakelock=3,c
在我的应用程序中,我有三个 Activity :A、B、C。 Activity A 包含带有 @OnItemClick 的 ListView ,该 ListView 启动 Activity B 并向其
我正在使用以下代码,以便当用户在浏览器中选择共享选项时显示我的应用程序: 当用户选择我的应用进
我知道这个问题已经被问过很多次了,但答案似乎从来都不适用。 Activity 1: public void buttonPress(View view){ Intent i = new Int
我正在使用 fcm 发送带有数据有效负载的通知(我排除了通知对象,因为我希望用户无论应用程序处于前台/后台还是已被终止,都能收到通知)。 我能够获取通知并在用户点击通知时将用户导航到特定 Activi
我是一名优秀的程序员,十分优秀!