08-20 03:24:43.148: WARN/WindowManager(61): Previous dispatch state: {{KeyEvent{action=0 code=20 repeat=0 meta=0 scancode=108 mFlags=8} to Window{44013028 com.founder.apabi.reader/com.founder.apabi.reader.view.CatalogActivity paused=false} @ 1282274678139 lw=Window{44013028 com.founder.apabi.reader/com.founder.apabi.reader.view.CatalogActivity paused=false} lb=android.os.BinderProxy@44010cf8 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44013028 com.founder.apabi.reader/com.founder.apabi.reader.view.CatalogActivity paused=false}}}
08-20 03:24:43.148: WARN/WindowManager(61): Current dispatch state: {{KeyEvent{action=1 code=20 repeat=0 meta=0 scancode=108 mFlags=8} to Window{44013028 com.founder.apabi.reader/com.founder.apabi.reader.view.CatalogActivity paused=false} @ 1282274683156 lw=Window{44013028 com.founder.apabi.reader/com.founder.apabi.reader.view.CatalogActivity paused=false} lb=android.os.BinderProxy@44010cf8 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{44013028 com.founder.apabi.reader/com.founder.apabi.reader.view.CatalogActivity paused=false}}}
08-20 03:24:43.178: INFO/Process(61): Sending signal. PID: 885 SIG: 3
08-20 03:24:43.388: INFO/Process(61): Sending signal. PID: 61 SIG: 3
08-20 03:24:43.388: INFO/dalvikvm(61): threadid=3: reacting to signal 3
08-20 03:24:43.538: INFO/dalvikvm(61): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:43.538: INFO/Process(61): Sending signal. PID: 121 SIG: 3
08-20 03:24:43.538: INFO/dalvikvm(121): threadid=3: reacting to signal 3
08-20 03:24:43.557: INFO/dalvikvm(121): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:43.568: INFO/Process(61): Sending signal. PID: 621 SIG: 3
08-20 03:24:43.568: INFO/dalvikvm(621): threadid=3: reacting to signal 3
08-20 03:24:43.578: INFO/dalvikvm(621): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:43.588: INFO/Process(61): Sending signal. PID: 265 SIG: 3
08-20 03:24:43.648: INFO/dalvikvm(265): threadid=3: reacting to signal 3
08-20 03:24:43.768: INFO/dalvikvm(265): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:43.808: INFO/Process(61): Sending signal. PID: 196 SIG: 3
08-20 03:24:43.888: INFO/dalvikvm(196): threadid=3: reacting to signal 3
08-20 03:24:44.008: INFO/Process(61): Sending signal. PID: 448 SIG: 3
08-20 03:24:44.057: INFO/dalvikvm(448): threadid=3: reacting to signal 3
08-20 03:24:44.188: INFO/dalvikvm(448): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:44.218: INFO/Process(61): Sending signal. PID: 128 SIG: 3
08-20 03:24:44.288: INFO/dalvikvm(128): threadid=3: reacting to signal 3
08-20 03:24:44.428: INFO/Process(61): Sending signal. PID: 193 SIG: 3
08-20 03:24:44.508: INFO/dalvikvm(193): threadid=3: reacting to signal 3
08-20 03:24:44.628: INFO/Process(61): Sending signal. PID: 125 SIG: 3
08-20 03:24:44.628: INFO/dalvikvm(125): threadid=3: reacting to signal 3
08-20 03:24:44.688: INFO/dalvikvm(125): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:44.758: ERROR/ActivityManager(61): ANR in com.founder.apabi.reader (com.founder.apabi.reader/.view.CatalogActivity)
08-20 03:24:44.758: ERROR/ActivityManager(61): Reason: keyDispatchingTimedOut
08-20 03:24:44.758: ERROR/ActivityManager(61): Load: 1.12 / 0.65 / 0.36
08-20 03:24:44.758: ERROR/ActivityManager(61): CPU usage from 98855ms to 55ms ago:
08-20 03:24:44.758: ERROR/ActivityManager(61): er.apabi.reader: 96% = 96% user + 0% kernel
08-20 03:24:44.758: ERROR/ActivityManager(61): system_server: 2% = 1% user + 0% kernel / faults: 581 minor
08-20 03:24:44.758: ERROR/ActivityManager(61): adbd: 0% = 0% user + 0% kernel
08-20 03:24:44.758: ERROR/ActivityManager(61): re-initialized>: 0% = 0% user + 0% kernel / faults: 20 minor
08-20 03:24:44.758: ERROR/ActivityManager(61): logcat: 0% = 0% user + 0% kernel
08-20 03:24:44.758: ERROR/ActivityManager(61): re-initialized>: 0% = 0% user + 0% kernel / faults: 7 minor
08-20 03:24:44.758: ERROR/ActivityManager(61): ndroid.launcher: 0% = 0% user + 0% kernel / faults: 91 minor
08-20 03:24:44.758: ERROR/ActivityManager(61): d.process.media: 0% = 0% user + 0% kernel / faults: 19 minor
08-20 03:24:44.758: ERROR/ActivityManager(61): emo.android.bmi: 0% = 0% user + 0% kernel / faults: 7 minor
08-20 03:24:44.758: ERROR/ActivityManager(61): TOTAL: 100% = 99% user + 0% kernel + 0% softirq
08-20 03:24:45.438: INFO/dalvikvm(196): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:46.397: INFO/dalvikvm(128): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:24:46.457: INFO/dalvikvm(193): Wrote stack traces to '/data/anr/traces.txt'
08-20 03:27:29.868: DEBUG/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol
08-20 03:59:07.448: ERROR/ActivityManager(61): Reason: keyDispatchingTimedOut
08-20 03:59:07.448: ERROR/ActivityManager(61): Load: 1.23 / 0.79 / 0.63
08-20 03:59:07.448: ERROR/ActivityManager(61): CPU usage from 95060ms to 62ms ago:
08-20 03:59:07.448: ERROR/ActivityManager(61): system_server: 5% = 4% user + 1% kernel / faults: 3013 minor 8 major
08-20 03:59:07.448: ERROR/ActivityManager(61): debuggerd: 1% = 0% user + 1% kernel / faults: 32 minor 1 major
08-20 03:59:07.448: ERROR/ActivityManager(61): adbd: 0% = 0% user + 0% kernel / faults: 48 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): logcat: 0% = 0% user + 0% kernel / faults: 25 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): re-initialized>: 0% = 0% user + 0% kernel / faults: 265 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): emo.android.bmi: 0% = 0% user + 0% kernel / faults: 264 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): com.svox.pico: 0% = 0% user + 0% kernel / faults: 282 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): mmcqd: 0% = 0% user + 0% kernel
08-20 03:59:07.448: ERROR/ActivityManager(61): zygote: 0% = 0% user + 0% kernel / faults: 203 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): kswapd0: 0% = 0% user + 0% kernel
08-20 03:59:07.448: ERROR/ActivityManager(61): re-initialized>: 0% = 0% user + 0% kernel / faults: 231 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): events/0: 0% = 0% user + 0% kernel
08-20 03:59:07.448: ERROR/ActivityManager(61): id.defcontainer: 0% = 0% user + 0% kernel / faults: 133 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): d.process.media: 0% = 0% user + 0% kernel / faults: 132 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): ndroid.settings: 0% = 0% user + 0% kernel / faults: 133 minor
08-20 03:59:07.448: ERROR/ActivityManager(61): +er.apabi.reader: 0% = 0% user + 0% kernel
08-20 03:59:07.448: ERROR/ActivityManager(61): +er.apabi.reader: 0% = 0% user + 0% kernel
08-20 03:59:07.448: ERROR/ActivityManager(61): TOTAL: 79% = 70% user + 8% kernel + 0% iowait + 0% irq + 0% softirq
涉及的代码模块(一个类)代码都贴这里,高手帮忙分析一下:
package ..
import ..public class CatalogAdapter extends BaseAdapter { private class ViewHolder {
TextView mTitle;
TextView mDescription;
Button mExpand;
} private class Wrapper{
public View convertView = null;
public ViewHolder holder = null;
} private ArrayList<CEBXOutlineElemWrapper> mItems = null; private LayoutInflater mInflater = null; // temporary variable used for listener set.
private int mTempPos = 0; private CatalogOperator mCatalogOperator = null; CatalogActivity mCatalogAtv = null; public CatalogAdapter(Context context,CatalogActivity catalogAtv,CatalogOperator catalogOperator) {
mInflater = LayoutInflater.from(context);
mCatalogAtv = catalogAtv;
mCatalogOperator = catalogOperator; if (catalogAtv == null || catalogOperator == null) {
Log.e("Error", "Input parameter error , null pointer in CatalogAdapter!");
}
} /*
* set outline source of one level.
*/
public void setSource(ArrayList<CEBXOutlineElemWrapper> elems) {
mItems = elems;
} @Override
public int getCount() {
return mItems.size();
} @Override
public Object getItem(int position) {
if (mItems.isEmpty()) {
Log.e("Error", "no items in CatalogAdapter.getItem!");
return null;
}
else {
if (position >= 0 && position < mItems.size()) {
return mItems.get(position);
} else {
Log.e("Error", "index out of bound in CatalogAdapter.getItem!");
return null;
}
}
} @Override
public long getItemId(int position) {
return position;
} private boolean canBeExpanded(int position) {
return false;
//mask for test , debug dead bug.
/* if (position < 0 || position >= mItems.size()) {
Log.e("Error", "Index out of bound in CatalogAdapter.canBeExpanded!");
throw new ArrayIndexOutOfBoundsException("error,my wrong understanding");
}
if (mItems.get(position) == null) {
Log.e("Error", "null object stored in mItems in CatalogAdapter!");
}
return CatalogOperator.canBeExpanded(mItems.get(position));*/
} private void placementHelper(Wrapper wrapper,boolean canBeExpanded) {
if (wrapper == null) {
Log.e("Error","input error, null pointer !");
return;
}
if (wrapper.holder == null) {
wrapper.holder = new ViewHolder();
}
if (canBeExpanded) {
wrapper.convertView = mInflater.inflate(R.layout.custom_catalog_listitem_btn, null);
wrapper.holder.mTitle = (TextView)wrapper.convertView.findViewById(R.id.catalog_title1);
wrapper.holder.mDescription = (TextView)wrapper.convertView.findViewById(R.id.catalog_pagenum1);
wrapper.holder.mExpand = (Button)wrapper.convertView.findViewById(R.id.catalog_btn_expand);
} else {
wrapper.convertView = mInflater.inflate(R.layout.custom_catalog_listitem_no_btn, null);
wrapper.holder.mTitle = (TextView)wrapper.convertView.findViewById(R.id.catalog_title2);
wrapper.holder.mDescription = (TextView)wrapper.convertView.findViewById(R.id.catalog_pagenum2);
}
wrapper.convertView.setTag(wrapper.holder);
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
Calendar cal=Calendar.getInstance();
long startTime = cal.getTimeInMillis(); boolean canBeExpanded = false;//canBeExpanded(position);
ViewHolder holder = null;
if (convertView == null) {
Wrapper wrapper = new Wrapper();
wrapper.convertView = null;
wrapper.holder = null;
placementHelper(wrapper,canBeExpanded);
holder = wrapper.holder;
convertView = wrapper.convertView;
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
if (holder == null) {
Wrapper wrapper = new Wrapper();
wrapper.convertView = null;
wrapper.holder = null;
placementHelper(wrapper,canBeExpanded);
holder = wrapper.holder;
convertView = wrapper.convertView;
convertView.setTag(holder);
Log.w("Warning","getTag is null , in CatalogAdapter.getView");
}
if ((canBeExpanded && holder.mExpand == null)
|| (!canBeExpanded && holder.mExpand != null)) {// 不可复用的旧视图
Wrapper wrapper = new Wrapper();
wrapper.convertView = null;
wrapper.holder = holder;
placementHelper(wrapper,canBeExpanded);
holder = wrapper.holder;
convertView = wrapper.convertView;
convertView.setTag(holder);
Log.w("Warning","realloc view , not usable old view.");
}
} // debug codes.
if (CatalogOperator.mShowDebuggingInfo) {
if (holder == null) {
Log.e("Error", "Holder is null");
}
if (holder.mTitle == null) {
Log.e("Error", "Holder.mTitle is null");
}
} CEBXOutlineElemWrapper elem = mItems.get(position);
if(elem != null) {
holder.mTitle.setText("any");
/* String title = elem.GetTitle();
if (title != null) {
holder.mTitle.setText(title);
} else {
holder.mTitle.setText("未命名");
}*/
// whether this is a time-cost function ?
// setPageNum(holder,position);
} else {
Log.e("Error", "Program Error !");
}
mTempPos = position;
// setListenerForRow(convertView);
if (canBeExpanded) {
setListenerForExpandBtn(holder,position);
}
if (convertView == null || holder == null) {
Log.e("Error", "in CatalogAdapter.getView");
} Log.i("Time : ", Long.toString(cal.getTimeInMillis() - startTime)); return convertView;
} // set page number to holder for page showing
private void setPageNum(ViewHolder holder,int position) {
if (position < 0 || position >= mItems.size()) {
if (CatalogOperator.mShowDebuggingInfo) {
Log.e("Error", "Index out of bound in CatalogAdapter.setPageNum!");
}
}
if (!CatalogOperator.calCatalogDest(mItems.get(position))) {
if (CatalogOperator.mShowDebuggingInfo) {
Log.e("Error", "false returned by calCatalogDest in CatalogAdapter.setPageNum!");
}
return;
}
CxGotoDest dest = CatalogOperator.getCatalogDest();
if (dest == null) {
Log.e("Error", "null returned by kernel calling !");
}
holder.mDescription.setText("第"+ Long.toString(dest.pagenum) + "页");
} /*
* 按下某目录项时的响应事件,假设用户是要打开此目录--定位图书,并返回到阅读界面。
* set listener for each row view.
*/
private void setListenerForRow(View convertView) {
convertView.setOnClickListener(new View.OnClickListener() {
private int mPos = mTempPos;
@Override
public void onClick(View v) {
mCatalogAtv.getReadyForCatalogOpen(mPos);
}
});
} /*
* expand when the button is pressed.
*/
private void setListenerForExpandBtn(ViewHolder holder,int position) {
holder.mExpand.setOnClickListener(new View.OnClickListener() {
private int mPos = mTempPos;
@Override
public void onClick(View v) {
if (mPos < 0 || mPos >= mItems.size()) {
Log.e("Error","Program Error in CatalogAdapter");
return;
} if (CatalogOperator.mShowDebuggingInfo) {
if (mItems.get(mPos) == null) {
Log.e("Error", "null pointer in setListenerForExpandBtn!");
}
} mItems = mCatalogOperator.getChildren(mItems.get(mPos)); if (CatalogOperator.mShowDebuggingInfo) {
if (mItems == null) {
Log.e("Error", "mItems is null!");
}
} notifyDataSetChanged(); if (CatalogOperator.mShowDebuggingInfo) {
Log.i("Info", "OK here");
}
}
});
}}
我今天碰到了好几个这样的问题。
都导致应用force close
应用未唤醒,或者服务未起来,导致消息无法分发到位。
不知道是整个机制分发消息处理有问题,
还是应用处理的问题。
好难
看看你有没有类似的在主线程中耗时的操作或函数调用。
http://topic.csdn.net/u/20101028/11/c61ceeec-f9d7-4e28-9e40-957c18df3aae.html
可是不知道那里有比较耗时的调用呢?