更新原始活动中的集成进度条
问题描述:
我一直在试图让我的进度条视图在我的文件扫描程序应用程序中工作,而且我完全被活动,服务,线程和处理程序的适当组合所困扰。更新原始活动中的集成进度条
下面是结构:我的活动包含水平风格的ProgressBar。在菜单项上单击,我产生了一个Service,onCreate(),这是我希望能够更新进度条的地方。
我的问题:我错过了什么?
- 活动 “一个”(与进度)
2. “一” .onOptionsItemSelected():菌种服务 “b” 的
3.“b”.onCreate():控制“a”中的ProgressBar // h ERE是在那里我有我的麻烦
布局进度条(1):
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_height="wrap_content"
android:max="100"
android:progress="0"
android:secondaryProgress="0"
android:layout_width="300px"
android:layout_marginLeft="10px"
android:id="@+id/progress_horizontal"
/>
“一” .onOptionsItemSelected(2):
public boolean onOptionsItemSelected(MenuItem item)
{
if (svc == null)
{
android.util.Log.v("@@@@@@@@@@@@@@@@@@@@@", "starting");
svc = new Intent(this, DoScan.class);
// done in "a".onCreate()
// hmap = new HashMap();
// hmap.put("tv", tv);
svc.putExtra("hmap", hmap);
startService(svc);
}
break;
}
“B” .onCreate( )(3):
@Override
public void onCreate() {
super.onCreate();
//startThread();
TextView tv = (TextView) Peekaboo.hmap.get("tv");
tv.append("cocktail");
}
答
若要生硬,您的服务的onCreate()
是...有问题:
- 不要试图部件传递给服务
- 不要试图从服务修改控件
- 不要试图用进度条
在工作时使用后台线程#1和#2的条款,问自己当用户旋转屏幕时会发生什么(例如,滑出G1的键盘),并且该服务所持有的小部件变得无效。
根据#3,启动本地服务不会自动创建后台线程。该服务将与活动和所有其他活动在同一线程上运行。如果您希望在后台线程上完成工作,请使用AsyncTask
或创建一个线程,并使用Handler或post()
或postDelayed()
或runOnUiThread()
让后台线程安排在UI线程上进行UI更新。
我正在寻找的是一种活动与产生的服务器进行通信的方式。 – montooner 2009-07-30 01:11:09