Tôi có một dịch vụ giám sát kết nối ổ cắm. Khi kết nối bị mất, nó cần hiển thị một Toast thông báo cho người dùng rằng nó đang kết nối lại. Điều này làm việc tốt lần đầu tiên. Sau đó tôi thấy enqueueToast trong nhật ký nhưng bánh mì nướng không được hiển thị. Bất kỳ ý tưởng được đánh giá cao. Tôi nghĩ rằng đây sẽ là một điều dễ dàng để thêm vào, nhưng tôi phải thiếu một cái gì đó.Bánh mì nướng Android bắt đầu từ Dịch vụ chỉ hiển thị khi
nhập Đăng
INFO/NotificationService (118): enqueueToast pkg = com.abc [email protected] thời gian = 1
Mã gọi Toast
public class ConnectionService extends Service
{ .....
public void restartConnection()
{
try
{
Log.i(this.toString(), "Attempting to reconnect...");
// increase the wait between each retry until the max is reached
int sleepTime = reconnectCounter * MIN_RECON_WAIT;
if (sleepTime > MAX_RECON_WAIT)
{
sleepTime = MAX_RECON_WAIT;
}
String msg = "The connection has been lost. Restart attempt will start in: " + sleepTime/1000 + " seconds";
Log.i(this.toString(), msg);
Toast.makeText(getApplicationContext(), msg , Toast.LENGTH_LONG).show();
Thread.sleep(sleepTime);
// increment the counter
reconnectCounter++;
this.startConnectionThread();
}
catch (Exception e)
{
Log.e(this.toString(), "Exception: " + e.toString());
e.printStackTrace();
}
}// end retartConnection
Đó có thể là vấn đề về luồng. Bạn đang gọi Toast.show() từ chuỗi giao diện người dùng hoặc từ một chuỗi riêng biệt? Bạn có thể cung cấp thêm một chút ngữ cảnh cho phương pháp này không. – Vuk
Điều này được gọi từ bên trong một lớp Dịch vụ đã được bắt đầu bằng một cuộc gọi bindService từ Hoạt động được hiển thị đầu tiên cho người dùng. Tôi đã hy vọng sử dụng một cuộc gọi runOnUiThread để hiển thị bánh mì nướng, nhưng tôi không thể tìm ra cách sử dụng nó trong Dịch vụ. – bursk