電話のメインメニューに移動し、サーバーに接続し、メッセージがカスタムトーストを表示する場合は、サービスが機能する必要があります。ほとんどのことを行いましたが、トーストにテキストしか表示できません。画像でカスタムトーストを作りたいのですが、アクティビティでそれを行う方法をたくさん見つけましたが、サービスでは機能していません。
このコードを正しく動作させるには何を変更すればよいか教えてもらえますか?
public class MyService extends Service {
private Toast toast;
private Timer timer;
private TimerTask timerTask;
private class MyTimerTask extends TimerTask {
@Override
public void run() {
showToast();
}
}
private void showToast() {
LayoutInflater inflater = (LayoutInflater)
getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.toast, null);
ImageView image = (ImageView)
layout.findViewById(R.id.image);
image.setImageResource(R.drawable.truck);
TextView textView = (TextView)
layout.findViewById(R.id.text);
textView.setText("Some toast message");
toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.BOTTOM, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
@Override
public void onCreate() {
super.onCreate();
timer = new Timer();
toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
clearTimerSchedule();
initTask();
timer.scheduleAtFixedRate(timerTask, 4 * 1000, 4 * 1000);
return super.onStartCommand(intent, flags, startId);
}
private void clearTimerSchedule() {
if(timerTask != null) {
timerTask.cancel();
timer.purge();
}
}
private void initTask() {
timerTask = new MyTimerTask();
}
@Override
public void onDestroy() {
clearTimerSchedule();
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}