Java Android:在服务内的时间任务更新GUI
社区你好 关于我的问题,我已经在论坛上看过了,但我不知道如何使用处理程序 我的问题:Java Android:在服务内的时间任务更新GUI,java,android,Java,Android,社区你好 关于我的问题,我已经在论坛上看过了,但我不知道如何使用处理程序 我的问题: GUI有一个文本字段。我创建了一个服务,它可以工作。服务应更新用户界面 我所拥有的: 安卓Galaxy S Handy 靛蓝服务发布2 我的编码: public class SamsungLoc1 extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInsta
GUI有一个文本字段。我创建了一个服务,它可以工作。服务应更新用户界面 我所拥有的:
- 安卓Galaxy S Handy
- 靛蓝服务发布2
public class SamsungLoc1 extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_samsung_loc1);
buttonStart = (Button) findViewById(R.id.buttonStart);
buttonStop = (Button) findViewById(R.id.buttonStop);
buttonStart.setOnClickListener(this);
buttonStop.setOnClickListener(this);
TextView tv1 = (TextView) findViewById(R.id.TextView01);
tv1.setText("initial1");
}
public void onClick(View src) {
switch (src.getId()) {
case R.id.buttonStart:
startService(new Intent(this, MyService.class));
break;
case R.id.buttonStop:
Log.d(TAG, "onClick: stopping srvice");
break;
}
}
}
因此,单击开始按钮时,服务MyService.class将启动:
public class MyService extends Service {
private static final String TAG = "MyService";
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
}
@Override
public void onDestroy() {
}
@Override
public void onStart(Intent intent, int startid) {
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
// @Override
public void run() {
//Here I would like to change the textview of the UI
tv1.setText("New Information");
}
},0,300000);
}
}
嗯,我已经读到我必须使用处理程序,但我不知道如何使用它。能不能请:-)给我一个剪短的代码如何更改服务的timertask内的textview tv1
亲切问候,安迪 服务应更新用户界面 不,不应该 该服务应该做一些事情,让你的应用程序的UI层知道一些发生在后台的事件。请记住,如果用户按下BACK或HOME或其他按钮,前台可能没有应用程序的UI层 而且,如果您对此的回答是“好吧,我将在这些情况下停止服务”,那么您不需要服务,应该将其丢弃。服务背后的要点是能够独立于UI层运行,用于纯后台工作 服务MyService.class启动
onStart()
已被弃用约四年。请学习现代Android应用程序开发。使用onStart命令()
,而不是onStart()
我已经读到我必须使用处理程序
虽然这是一种选择,但它不是我的第一选择。或者我的第二选择。或者我的第三选择
我个人的第一选择是使用第三方消息总线,例如。我手边没有Otto应用程序示例,因为我的书中还没有介绍过这一点(尽管它在我的待办事项列表中很重要…)
我的第二个选择是使用LocalBroadcastManager
。LocalBroadcastManager
的优点是它位于Android支持包中(您可能已经在使用),它的工作原理与常规系统广播(您可能已经有过使用经验)。使用LocalBroadcastManager
我的第三个选择是使用实际的系统广播,其中您的服务调用sendBroadcast()
,并且您的活动在前台时有一个注册的BroadcastReceiver
。如果某个活动位于前台,则可能需要更新该活动,否则会显示通知,这一点非常有用,如中所示。允许第三方应用程序了解您的活动也很有用,前两个解决方案排除了这一点
虽然在某些情况下直接使用处理程序是个好主意,但我想不出任何与Android新手相关的方法。您真的需要服务来更新UI吗?您好,Commonware,非常感谢您的回复。因此,我将查看LocalBroadcastManager或系统广播。还感谢您提供的示例提示。我会尽力理解的:-)安迪,请代我问候