我希望在我的应用程序的后台使用服务。当在服务中达到一些特殊的地方时,我希望将其停止并显示给用户通知,直到他或她点击" OK" (某种警报窗口)。当他或她点击" OK" - >我希望将服务中的一些数据传递给我的Activity。
我可以请求帮助。我的服务已经运行良好,我希望使用Alert Dialog - 但不知道如何从服务中调用它。
答案 0 :(得分:1)
作为official documentation states,后台服务永远不应自行启动活动以接收用户互动。 相反,您应该向通知栏发送通知。通知可以被标记为持久并且振动直到用户采取行动,这与在用户点击按钮之前不解除弹出一样强烈。请按照上面的链接获取关于通知的好(和官方)教程
如果你真的想要发布一个活动(并弹出一个对话框),你必须首先将以下标志设置为你的意图,否则你会得到一个例外。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 1 :(得分:0)
一旦达到服务中的某个点,就启动一个活动,不要使用setContent视图,只需在onCreate()中使用它来显示警告对话框。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("ALERT")
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
当用户按下okay时,对话框将以活动结束。
编辑:
对于您要发送到活动的数据,只需将其放入启动活动的包中。
Intent intent = new Intent(this, SecondActivity.class);
Bundle b = new Bundle();
// see Bundle.putInt, etc.
// Bundle.putSerializable for full Objects (careful there)
b.putXXXXX("key", ITEM);
intent.putExtras(b);
startActivity(intent);
// -- later, in Activity
Bundle b = this.getIntent().getExtras();
int i = b.getInt("key");