避免Android开发中的ANR(2)

public class DismissAllAlarmsService extends IntentService {
 @Override public void onHandleIntent(Intent unusedIntent) {
  ContentResolver resolver = getContentResolver();
  ...
  resolver.update(uri, values, selection, null);
 }
}
in AlertReceiver extends BroadcastReceiver, onReceive():  (main thread)
    Intent intent = new Intent(context, DismissAllAlarmsService.class);
    context.startService(intent);其它技巧
1、当启动AsyncTask的时候,立刻disable UI元素(按钮等等)。

2、显示一些动画,表示在处理中

3、使用进度条对话框

4、使用一个定时器作为耗时警告,在AsyncTask开始时启动定时器,在AsyncTask的onPostExecute方法中取消定时器。

5、当不确定要耗时多久的时候,组合使用上述所有方法

总结
离开主线程!
磁盘和网络操作不是马上就能完的
了解sqlite在干嘛
进度展示很好
PS,在视频讲座中,作者还提到,Chrome团队为了避免Jank(响应超时而死掉),几乎所有的功能和任务都会在子线程里面去做。这一点也值得在Android中借鉴。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfxdz.html