对话框:MyActivity 已停止

Dialog: MyActivity has stopped

我在 Android 上研究服务,在这个例子中我遇到了一个代码,其中一段时间​​后来自服务的消息。但是我不明白为什么我得到的是对话框"MyActivity has stopped"(下图link)而不是通知。我找到了原因,这是注释掉的行:

//Toast.makeText(this, "onCreate: Service work!", Toast.LENGTH_SHORT).show();

我的代码:

public class MyService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
        //Toast.makeText(this, "onCreate: Service work!", Toast.LENGTH_SHORT).show();
    }

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

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        try {
            TimeUnit.SECONDS.sleep(3);
            Toast.makeText(MyService.this, "onStartCommand: Ding!", Toast.LENGTH_SHORT).show();
        }catch (InterruptedException ex){
            ex.printStackTrace();
        }
        return super.onStartCommand(intent, flags, startId);
    }
}

我从以下开始服务:

startService(new Intent(this,MyService.class));

在我的 AndroidManifest 服务中注册为:

<service android:name=".MyService" android:process=":com.myService"/>

问题:

请解释为什么我在 onCreate() 中使用 Toast 时收到此消息。

https://i.stack.imgur.com/VlHQ9.png

您的服务可能在不同的线程中。 使用处理程序显示吐司:

Handler handler = new Handler();
Runnable toastRunnable = new Runnable(){ 
@Override public void run() { 
Toast.makeText(MyService.this, "onCreate: Service work!", Toast.LENGTH_SHORT).show(); 
    } 
};

handler.post(toastRunnable);