当前位置:首页 » 安卓系统 » android线程超时

android线程超时

发布时间: 2022-06-21 12:25:36

A. android 开机log报错 Activity idle timeout for HistoryRecord主要由哪些问题引起的

  • 开机报错 Activity idle timeout for HistoryRecord,

    • 含义:开机时从启动一个Activity到其内容被显示出来,已经超出了时间限制。

    • 原因:主线程的Activity超时运行,做了耗时较多的工作,需要将这些工作放置在另一个新线程中操作

    • 耗时较多的部分,只能仔细查看下代码了


B. Android 如何解决数据库多线程锁的问题

多线程是很容易造成死锁,一般情况下死锁都是因为并发操作引起的。我不懂java,但死锁这个问题每种开发工具和数据库都会碰到.解决办法是:
1、程序方面优化算法(如有序资源分配法、银行算法等),在一个程序里,能不用多线程更新同一张数据库表 尽量不要用,如果要用,其避免死锁的算法就很复杂。
2、数据库方面设置等待超时时间
3、发生死锁后直接KILL掉数据库进程

C. java 开发Android的APP,开启线程读取数据,一但网络中断,APP便停止运行,请问如何解决

是这样的,你在线程中读取网络数据,如果网络中断了,就会抛出一系列的异常

这时候,你就要捕获这些异常做不同的提示

以下是一些网络连接中常见的异常

//处理网络异常
publicStringExceptionCode(Exceptione){
if(einstanceofHttpException){
returncontext.getString(R.string.networkFailure);//网络异常

}elseif(){
returncontext.getString(R.string.responseTimeout);//响应超时

}elseif(){
returncontext.getString(R.string.requestTimeout);//请求超时

}elseif(einstanceofIOException){
returncontext.getString(R.string.networkError); //网络异常

}elseif(einstanceofJSONException){
returncontext.getString(R.string.json_error); //json格式转换异常

}else{
returncontext.getString(R.string.canNotGetConnected);//无法连接网络
}
}

已经封装好了,你直接调用就好了

D. Android等待线程返回结果

楼主,不知道我说的对不对,如果有问题,可以进一步交流
首先在onCreate使用匿名类做子线程是不行的,如果下载时间过长onCreate是主线程,阻塞时间过长会出现ANR(超时)错误
如果要在onCreate上开启线程,需要使用Timer
我个人建议是在onCreate中开启Timer在TimerTask的run方法里面开启匿名线程或者直接就在TimerTask的run方法里面下载,下载完毕后,使用Handler接收消息再执行System.out.println(str);

E. Android怎么结束一个线程

在Java语言中,安全结束线程的方法就是“让线程的自身流程执行完”。
出现“僵尸线程”的原因:1.线程在死循环中执行。2.线程阻塞。

很明显,你的ReadHandlerThread线程发生了线程阻塞。

dis.readFully(b),你在这里调用了一个阻塞方法,由于socket的另一端一直没有发送数据,ReadHandlerThread线程一直阻塞在了这里,等待接收完136字节的数据。136字节没有接收完,readFully方法将一直处于阻塞状态。

解决方法,设置socket的等待超时值,而不是无限等待。

F. android中开线程延时问题

我想做到的效果是屏幕中画一个圆,然后圆会慢慢变小,当半径变成1时停止变小。然后每触摸一次屏幕圆半径会增大,直到半径到100停止。我把这两个写在了两个线程里,但是目前运行下来触摸屏放大圆可以,但是圆自己慢慢变小却不行。

MainActivity.java 重要 代码

public class MainActivity extends Activity{

private Thread thread1;
private Thread thread2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final FrameLayout frame=new FrameLayout(this);
setContentView(frame);
frame.findViewById(R.id.framelayout1);
final MyView view=new MyView(this);

thread1=new Thread(new Runnable(){
@Override
public void run(){
view.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v,MotionEvent event){
++view.r;
view.invalidate();
return true;
}
});
}
});

thread2=new Thread(new Runnable(){
@Override
public void run(){
--view.r;
view.invalidate();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

thread1.start();
thread2.start();
frame.addView(view);
if (view.r==1)
{
thread2.interrupt();
}
if (view.r==100){
thread1.interrupt();
}
}

}

class MyView extends View{
int r=10,x,y;
public MyView(Context context){
super(context);
x=context.getResources().getDisplayMetrics().widthPixels/2;
y=context.getResources().getDisplayMetrics().heightPixels/2;
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
Paint paint=new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(3);
paint.setStyle(Style.STROKE);
paint.setColor(Color.BLUE);
canvas.drawCircle(x,y,r,paint);
}
}

G. Android的App中线程池的使用,具体使用多少个线程池

这个需要根据实际情况来确定的,一般来说根据模块的功能和优先级来区分,比如你一些必须加载的如用户登录就不要和图片加载的用同一个线程池,当然这种情况比较少见,用户和服务器配置数据的应该单独用一个线程池,下载模块应该独立一个,其它数据展示的用一个,曾经就出现过APP启动的时候请求的线程过多导致用户登录线程一直排不上超时的情况

热点内容
linux高级编程pdf 发布:2024-05-10 19:16:56 浏览:304
八四消毒液安卓小伤口有什么反应 发布:2024-05-10 19:07:57 浏览:373
存储卡型号 发布:2024-05-10 19:02:55 浏览:605
监控存储显示休眠状态怎么回事 发布:2024-05-10 18:51:33 浏览:20
安安兔检测怎么检测配置 发布:2024-05-10 18:34:04 浏览:999
九江云服务器哪家公司好 发布:2024-05-10 18:34:03 浏览:854
剑侠情缘手游文件夹 发布:2024-05-10 18:08:10 浏览:898
sqlin排序 发布:2024-05-10 17:59:01 浏览:470
安卓开机优化应用什么问题 发布:2024-05-10 17:55:34 浏览:318
怎么将安卓手机内存扩容 发布:2024-05-10 17:55:29 浏览:703