我从我的主要活动开始提供服务。该活动不会出现,直到服务完成。为什么这样?这个问题的解决方案是什么?为什么活动阻止直到服务完成在Android?
3
A
回答
1
请详细阅读本文件。 http://developer.android.com/guide/components/processes-and-threads.html
服务在UI线程上运行。你需要在不同的线程中开始耗时的部分服务(可能是asynctask)。
0
0
一个简单的示例服务,使您明确如何使用它。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;
public class ServiceTimeToast extends Activity {
/** Called when the activity is first created. */
public static MyHandler myHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent(ServiceTimeToast.this,ServiceManagement.class);
startService(intent);
myHandler = new MyHandler();
}
class MyHandler extends Handler
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 111) {
//int count = Integer.parseInt(msg.obj);
int count = (Integer) msg.obj;
Log.i("MyLog", "Service Running Started"+count);
Toast.makeText(ServiceTimeToast.this, "Service Running properly::"+count, Toast.LENGTH_SHORT).show();
}
}
}
}
ServiceManagement.java //服务类
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
public class ServiceManagement extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Log.v("MyLog", "OnCreate of the Service management called");
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.v("MyLog", "OnDestroy of the Service management called");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.v("MyLog", "onStartCommand of the Service management called");
ThreadTime t = new ThreadTime();
Thread thread = new Thread(t);
thread.start();
return super.onStartCommand(intent, flags, startId);
}
}
class ThreadTime implements Runnable
{
int MAX_SEC = 5;
//MyHandler handler = new MyHandler();
@Override
public void run() {
// TODO Auto-generated method stub
Log.i("MyLog", "Thread Started!!");
int count = 0;
for(int i = 0;i<MAX_SEC;i++)
{
try {
Log.i("MyLog", "Inside the For loop!!!!!!");
Message message = ServiceTimeToast.myHandler.obtainMessage(111);
message.obj = ++count;
ServiceTimeToast.myHandler.sendMessage(message);
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
}
}
相关问题
- 1. 为什么MQTT服务阻止活动?
- 2. 阻止Android活动退出,直到清理完成
- 3. Android阻止服务被绑定,直到异步操作完成
- 4. 阻止主要活动,直到其他完成
- 5. Android为什么没有完成活动
- 6. 活动正在等待,直到服务完成
- 7. Android Tell服务无法启动,直到其他服务完成
- 8. 阻止接口,直到完成操作
- 9. 阻止jenkins任务,直到所有下游任务完成?
- 10. Android - 调用完成()在活动不会阻止它运行
- 11. Android,活动完成()会发生什么?
- 12. 阻塞,直到任务完成onAnimationEnd
- 13. 阻止EDT直到executorservice完成所有任务
- 14. Android:某些意图附加功能阻止活动完成
- 15. 这个活动为什么不完成?
- 16. 为什么在完成活动后android不清理内存?
- 17. 直到第一个动作完成时才阻止输入?
- 18. 阻止提交,直到一些Ajax动作完成
- 19. iOS直到动画完成后才阻止旋转
- 20. Javascript阻止自动完成
- 21. 为什么我的android活动停止?
- 22. 有没有什么办法阻止凌空请求,直到响应完成
- 23. 服务器遇到阻止其完成请求
- 24. Android活动完成
- 25. 在Android中完成活动
- 26. 在儿童活动完成阻止屏幕锁
- 27. 使UI线程等待,直到服务完成在android
- 28. 为什么停止我的服务杀死前台活动?
- 29. 如何通知服务完成活动?
- 30. 为什么完成事件会阻止这个测试通过?