Rohit Bajaj
asked on
NullPointerException in Android App on creating new Intent
Hi,
The NullPointerException occurs at the line :
Intent callActivityIntent = new Intent(getActivity(), CallActivity.class);
of BasePreCallSegment.java file.
I have the following CallActivity.java file :
Following is the BasePreCallSegment.java
Following is the Stack Trace and Thread Trace for the Exception :
Please help me find out the reason for this exception.
Thanks
The NullPointerException occurs at the line :
Intent callActivityIntent = new Intent(getActivity(), CallActivity.class);
of BasePreCallSegment.java file.
I have the following CallActivity.java file :
package kujo.app.ui.activecall;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.WindowManager;
import java.util.ArrayList;
import java.util.Arrays;
import co.kujo.contact.ContactService;
import kujo.app.AuthManager;
import kujo.app.BuildConfig;
import kujo.app.CallManager;
import kujo.app.CallState;
import kujo.app.ICallStateListener;
import kujo.app.PSTNCallRecordsHelper;
import kujo.app.PSTNCallStateEventPublisher;
import kujo.app.R;
import kujo.app.SoundManager;
import kujo.app.application.VoipApplication;
import kujo.app.ui.BaseLoggedInActivity;
import kujo.app.ui.home.ContactItem;
import kujo.onboarding.UserProfile;
import to.talk.error.ErrorReporter;
import to.talk.logging.Logger;
import to.talk.logging.LoggerFactory;
public class CallActivity extends BaseLoggedInActivity {
private static final String CURRENT_FRAGMENT_NAME = "current_fragment_name";
public static final String EXTRA_CALL_STATE = "extra_call_state";
private volatile ArrayList<CallItem> _currentCallList = new ArrayList<CallItem>(); //we use array list to pass in bundle and avoid type-cast
private CallManager _callManager;
private ICallStateListener _callListener;
public static String EXTRA_CALL = "extra_call";
public static String EXTRA_CALL_LIST = "extra_call_list";
private Logger _logger = LoggerFactory.getTrimmer(CallActivity.class.getSimpleName());
private volatile boolean _isCallStatsFragmentOpened = false;
private volatile String _currentCallFragmentName = null;
private boolean _isSavedBundleInOnCreateNull = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.active_call_activity);
_callManager = CallManager.getInstance();
_isSavedBundleInOnCreateNull = (savedInstanceState == null);
if (savedInstanceState == null) //activity first time
{
CallItem callItem = getIntent().getParcelableExtra(EXTRA_CALL);
_currentCallList.add(callItem);
UserProfile userProfile = VoipApplication.getOnboardingService().getUserProfile();
ContactItem contact = callItem.getContact();
AuthManager.AuthParams params = AuthManager.generateAuthParams(userProfile.getGuid(), userProfile.getToken(), contact.getPhoneNumber());
callItem.setUniqueCallIdentifier(params.getCallId());
_callManager.call(callItem, params);
SoundManager.getInstance().setIsSpeakerEnabled(false);
SoundManager.getInstance().setIsMuteEnabled(false, false);
ContactService.getInstance().addToRecents(contact.getPhoneNumber());
_currentCallFragmentName = getRelevantFragmentClassName(_currentCallList);
Fragment fragment = getFragmentInstance(_currentCallFragmentName, _currentCallList);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, fragment).commit();
} else {
_currentCallList = savedInstanceState.getParcelableArrayList(EXTRA_CALL_LIST);
_currentCallFragmentName = savedInstanceState.getString(CURRENT_FRAGMENT_NAME);
}
_logger.debug("on create, currentCall List: {}, current fragment : {}", _currentCallList, _currentCallFragmentName);
_callListener = getCallListener();
}
private Fragment getFragmentInstance(String fragmentClassName, ArrayList<CallItem> callList) {
Bundle bundle = getBundleWithCallList(callList);
return Fragment.instantiate(CallActivity.this, fragmentClassName, bundle);
}
private Bundle getBundleWithCallList(ArrayList<CallItem> callList) {
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(EXTRA_CALL, callList);
CallItem callItem = callList.get(0);
String uniqueIdentifier = callItem.getUniqueIdentifier();
CallState callState = _callManager.getCallState(uniqueIdentifier);
if (callState == null) {
throw new NullPointerException("call state is null, isSavedBundleNullInOnCreate" +
_isSavedBundleInOnCreateNull);
}
_logger.debug("call state name in bundle: {}", callState.name());
bundle.putString(EXTRA_CALL_STATE, callState.name());
return bundle;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (outState == null) {
outState = new Bundle();
}
outState.putParcelableArrayList(EXTRA_CALL_LIST, _currentCallList);
outState.putString(CURRENT_FRAGMENT_NAME, _currentCallFragmentName);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.active_call_activity_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean isVisible = !BuildConfig.BUILD_TYPE.equals("release") &&
isAnyCallConnected(_currentCallList) && !_isCallStatsFragmentOpened;
menu.findItem(R.id.call_stats).setVisible(isVisible);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case android.R.id.home:
onBackPressed();
return true;
case R.id.call_stats:
_isCallStatsFragmentOpened = true;
setAppropriateFragment(_currentCallList);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void setAppropriateFragmentOnUIThread(final ArrayList<CallItem> callList) {
runOnUiThread(new Runnable() {
@Override
public void run() {
setAppropriateFragment(callList);
}
});
}
private void setAppropriateFragment(ArrayList<CallItem> callList) {
String fragmentClassName = getRelevantFragmentClassName(callList);
_logger.debug("appropriate class name: {}", fragmentClassName);
if (!_currentCallFragmentName.equals(fragmentClassName)) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment fragment = getFragmentInstance(fragmentClassName, callList);
transaction.replace(R.id.fragment_container, fragment);
transaction.commitAllowingStateLoss();
// getActionBar().setDisplayHomeAsUpEnabled(_isCallStatsFragmentOpened);
invalidateOptionsMenu();
_currentCallFragmentName = fragmentClassName;
} else {
_logger.debug("refresh for instance class: {}", fragmentClassName);
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (fragment == null) {
_logger.debug("fragment fetched is null.. should not happen!");
} else {
Bundle bundle = getBundleWithCallList(callList);
((BaseCallFragment) fragment).refresh(bundle);
}
}
}
private String getRelevantFragmentClassName(ArrayList<CallItem> callList) {
boolean isAnyCallConnected = isAnyCallConnected(callList);
boolean isEveryCallCompleted = isEveryCallCompleted(callList);
boolean anyCallHangRequested = isAnyCallHangRequested(callList);
Class fragmentClass;
if (isAnyCallConnected) {
fragmentClass = _isCallStatsFragmentOpened ? CallStatsFragment.class : ActiveCallFragment.class;
} else if (anyCallHangRequested) {
fragmentClass = ActiveCallFragment.class;
} else if (isEveryCallCompleted) {
fragmentClass = PostCallFragment.class;
} else {
CallItem call = _currentCallList.get(0);
boolean isIncomingCall = call.isIncomingCall();
fragmentClass = isIncomingCall ? IncomingCallFragment.class : OutgoingCallFragment.class;
}
return fragmentClass.getName();
}
private boolean isAnyCallHangRequested(ArrayList<CallItem> callList) {
for (CallItem callItem : callList) {
boolean status = _callManager.isCallHangRequested(callItem.getUniqueIdentifier());
if (status) {
return true;
}
}
return false;
}
private boolean isEveryCallCompleted(ArrayList<CallItem> callList) {
for (CallItem call : callList) {
boolean status = _callManager.isCallCompleted(call.getUniqueIdentifier());
if (!status) {
return false;
}
}
return true;
}
private boolean isAnyCallConnected(ArrayList<CallItem> callList) {
for (CallItem call : callList) {
boolean status = _callManager.isCallConnected(call.getUniqueIdentifier());
if (status) {
return true;
}
}
return false;
}
private ICallStateListener getCallListener() {
return new ICallStateListener() {
@Override
public void onCallAdded(CallItem callItem) {
}
@Override
public void onCallStateChange(final CallItem call, final CallState callState) {
runOnUiThread(new Runnable() {
@Override
public void run() {
_logger.debug("new call: " + call + " callState: " + callState + " prev call list: " + _currentCallList);
if (_currentCallList.contains(call)) {
setAppropriateFragmentOnUIThread(_currentCallList);
} else if (Arrays.asList(CallState.CONNECTING, CallState.EARLY).contains(callState)
&& isEveryCallCompleted(_currentCallList)) {
_currentCallList = new ArrayList<CallItem>();
_currentCallList.add(call);
setAppropriateFragmentOnUIThread(_currentCallList);
} else if (callState.equals(CallState.COMPLETED)) {
_currentCallList.remove(call);
setAppropriateFragmentOnUIThread(_currentCallList);
} else if (call.isIncomingCall()) {
//todo: ui refresh for call waiting
//_sipsdk.callQueued(call);
}
}
});
}
@Override
public void onCallRemoved(CallItem callItem) {
}
};
}
@Override
protected void onResume() {
super.onResume();
if (PSTNCallRecordsHelper.getInstance().isAnyPSTNCallActive()) {
hangAllCalls();
finish();
} else {
CallManager.getInstance().addListener(_callListener);
setAppropriateFragment(_currentCallList);
}
}
@Override
protected void onPause() {
super.onPause();
CallManager.getInstance().removeListener(_callListener);
}
@Override
public void onBackPressed() {
if (isEveryCallCompleted(_currentCallList)) {
finish();
} else if (_isCallStatsFragmentOpened) {
_isCallStatsFragmentOpened = false;
setAppropriateFragment(_currentCallList);
}
}
public void onEvent(PSTNCallStateEventPublisher.PhoneIncomingCallEvent event) {
finish();
}
private void hangAllCalls() {
_callManager.hangUpAllcalls();
}
}
Following is the BasePreCallSegment.java
package kujo.app.ui;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import kujo.app.AppSettings;
import kujo.app.application.VoipApplication;
import kujo.app.ui.activecall.CallActivity;
import kujo.app.ui.activecall.CallItem;
import kujo.app.ui.home.ContactItem;
import kujo.app.ui.home.EchoWarningDialog;
import kujo.app.ui.home.MobileDataWarningDialog;
import to.talk.kvstore.BasicKVStore;
import to.talk.kvstore.KeyValueStore;
import to.talk.logging.Logger;
import to.talk.logging.LoggerFactory;
public class BasePreCallFragment extends Fragment {
protected static int REQUEST_CODE_MOBILE_WARNING = 106;
protected static int REQUEST_CODE_ECHO_WARNING = 108;
protected void requestCall(ContactItem contactItem) {
if (new PreCallChecker().isGoodToCall(contactItem, BasePreCallFragment.this,
getKeyValueStore(), REQUEST_CODE_MOBILE_WARNING,
REQUEST_CODE_ECHO_WARNING)) {
callContact(contactItem);
}
}
private void callContact(ContactItem contactItem) {
Intent callActivityIntent = new Intent(getActivity(), CallActivity.class);
CallItem callItem = new CallItem(contactItem, false);
callActivityIntent.putExtra(CallActivity.EXTRA_CALL, callItem);
startActivity(callActivityIntent);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_CODE_MOBILE_WARNING) {
setMobileWarningDialogShowPref(intent);
if (resultCode == MobileDataWarningDialog.RESULT_CODE_ACTION_DISMISSED) {
ContactItem contactItem = extractCallItem(intent);
callContact(contactItem);
}
} else if (requestCode == REQUEST_CODE_ECHO_WARNING) {
setEchoWarningDialogShown();
if (resultCode == EchoWarningDialog.RESULT_CODE_ACTION_PROCEED) {
ContactItem contactItem = extractCallItem(intent);
requestCall(contactItem);
}
}
}
public ContactItem extractCallItem(Intent intent) {
Bundle bundle = intent.getBundleExtra(MobileDataWarningDialog.INPUT_BUNDLE);
return bundle.getParcelable(MobileDataWarningDialog.CONTACT_ITEM);
}
private void setEchoWarningDialogShown() {
KeyValueStore keyValueStore = getKeyValueStore();
keyValueStore.putBoolean(AppSettings.ECHO_WARNING_SHOWN.name(), true);
}
private void setMobileWarningDialogShowPref(Intent intent) {
boolean doNotShowAgain = intent.getBooleanExtra(MobileDataWarningDialog.DO_NOT_SHOW_AGAIN, false);
if (doNotShowAgain) {
KeyValueStore keyValueStore = getKeyValueStore();
keyValueStore.putBoolean(AppSettings.DO_NOT_SHOW_MOBILE_WARNING.name(), true);
}
}
private KeyValueStore getKeyValueStore() {
//todo: fix the injection of context or kv store
return new BasicKVStore(VoipApplication.getInstance().getApplicationContext(), AppSettings.name);
}
}
Following is the Stack Trace and Thread Trace for the Exception :
Stack Trace
_________________________________
0 java.lang.NullPointerException
1 at android.content.ComponentName.<init>(ComponentName.java:75)
2 at android.content.Intent.<init>(Intent.java:3173)
3 at kujo.app.ui.BasePreCallFragment.callContact(BasePreCallFragment.java:32)
4 at kujo.app.ui.BasePreCallFragment.requestCall(BasePreCallFragment.java:27)
5 at kujo.app.ui.CallHelper$1.onSuccess(CallHelper.java:25)
6 at kujo.app.ui.CallHelper$1.onSuccess(CallHelper.java:22)
7 at com.google.common.util.concurrent.Futures$5.run(Futures.java:1231)
8 at android.os.Handler.handleCallback(Handler.java:605)
9 at android.os.Handler.dispatchMessage(Handler.java:92)
10 at android.os.Looper.loop(Looper.java:137)
11 at android.app.ActivityThread.main(ActivityThread.java:4456)
12 at java.lang.reflect.Method.invokeNative(Native Method)
13 at java.lang.reflect.Method.invoke(Method.java:511)
14 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
15 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
16 at dalvik.system.NativeStart.main(Native Method)
Threads
_________________________________
Thread: DConnectionManager
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: pool-19-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: pool-26-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1051)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: Binder Thread #1
0 dalvik.system.NativeStart.run(Native Method)
Thread: pool-25-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: FinalizerDaemon
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
5 java.lang.Thread.run(Thread.java:856)
Thread: FinalizerWatchdogDaemon
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:364)
2 java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:213)
3 java.lang.Thread.run(Thread.java:856)
Thread: AsyncTask #4
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 com.google.android.gms.common.a.dV(Unknown Source)
7 com.google.android.gms.ads.identifier.AdvertisingIdClient.a(Unknown Source)
8 com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source)
9 java.lang.reflect.Method.invokeNative(Native Method)
10 java.lang.reflect.Method.invoke(Method.java:511)
11 com.facebook.internal.Utility.invokeMethodQuietly(Utility.java:524)
12 com.facebook.internal.AttributionIdentifiers.getAndroidId(AttributionIdentifiers.java:85)
13 com.facebook.internal.AttributionIdentifiers.getAttributionIdentifiers(AttributionIdentifiers.java:110)
14 com.facebook.AppEventsLogger.getSessionEventsState(AppEventsLogger.java:716)
15 com.facebook.AppEventsLogger.access$600(AppEventsLogger.java:111)
16 com.facebook.AppEventsLogger$5.run(AppEventsLogger.java:673)
17 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
18 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
19 java.lang.Thread.run(Thread.java:856)
Thread: pool-1-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 java.lang.Thread.run(Thread.java:856)
Thread: db-callback-0
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 java.lang.Thread.run(Thread.java:856)
Thread: RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41ab35a8
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
5 java.lang.Thread.run(Thread.java:856)
Thread: OPTMZ
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:364)
2 android.os.ConditionVariable.block(ConditionVariable.java:97)
3 crittercism.android.g.run(Unknown Source)
4 crittercism.android.co.a(Unknown Source)
5 crittercism.android.cs.run(Unknown Source)
6 java.lang.Thread.run(Thread.java:856)
Thread: RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@414c9620
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
5 java.lang.Thread.run(Thread.java:856)
Thread: pool-3-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 java.lang.Thread.run(Thread.java:856)
Thread: GC
0 dalvik.system.NativeStart.run(Native Method)
Thread: pool-5-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41bb5cf8
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
5 java.lang.Thread.run(Thread.java:856)
Thread: Binder Thread #3
0 dalvik.system.NativeStart.run(Native Method)
Thread: db-reader-0
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1051)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41bd9ed8
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
5 java.lang.Thread.run(Thread.java:856)
Thread: AsyncTask #1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 java.lang.Thread.run(Thread.java:856)
Thread: AsyncTask #2
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 com.google.android.gms.common.a.dV(Unknown Source)
7 com.google.android.gms.ads.identifier.AdvertisingIdClient.a(Unknown Source)
8 com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source)
9 java.lang.reflect.Method.invokeNative(Native Method)
10 java.lang.reflect.Method.invoke(Method.java:511)
11 com.facebook.internal.Utility.invokeMethodQuietly(Utility.java:524)
12 com.facebook.internal.AttributionIdentifiers.getAndroidId(AttributionIdentifiers.java:85)
13 com.facebook.internal.AttributionIdentifiers.getAttributionIdentifiers(AttributionIdentifiers.java:110)
14 com.facebook.Settings.publishInstallAndWaitForResponse(Settings.java:347)
15 com.facebook.Settings$2.run(Settings.java:300)
16 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
17 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
18 java.lang.Thread.run(Thread.java:856)
Thread: Signal Catcher
0 dalvik.system.NativeStart.run(Native Method)
Thread: sip_thread
0 android.os.MessageQueue.nativePollOnce(Native Method)
1 android.os.MessageQueue.next(MessageQueue.java:118)
2 android.os.Looper.loop(Looper.java:118)
3 android.os.HandlerThread.run(HandlerThread.java:60)
Thread: WebViewCoreThread
0 android.os.MessageQueue.nativePollOnce(Native Method)
1 android.os.MessageQueue.next(MessageQueue.java:118)
2 android.os.Looper.loop(Looper.java:118)
3 android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:881)
4 java.lang.Thread.run(Thread.java:856)
Thread: java.lang.ProcessManager
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:364)
2 java.lang.ProcessManager.waitForMoreChildren(ProcessManager.java:140)
3 java.lang.ProcessManager.watchChildren(ProcessManager.java:105)
4 java.lang.ProcessManager.access$000(ProcessManager.java:40)
5 java.lang.ProcessManager$1.run(ProcessManager.java:58)
Thread: ReferenceQueueDaemon
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:364)
2 java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:128)
3 java.lang.Thread.run(Thread.java:856)
Thread: pool-6-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 com.mobileapptracker.MATEventQueue$Dump.run(Unknown Source)
3 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
4 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
5 java.lang.Thread.run(Thread.java:856)
Thread: pool-21-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: Binder Thread #2
0 dalvik.system.NativeStart.run(Native Method)
Thread: pool-4-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 java.lang.Thread.run(Thread.java:856)
Thread: pool-23-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: udp_thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1051)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: Compiler
0 dalvik.system.NativeStart.run(Native Method)
Thread: udp_thread-2
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1051)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: doorSocket
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2061)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1062)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: AsyncTask #3
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 com.google.android.gms.common.a.dV(Unknown Source)
7 com.google.android.gms.ads.identifier.AdvertisingIdClient.a(Unknown Source)
8 com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(Unknown Source)
9 java.lang.reflect.Method.invokeNative(Native Method)
10 java.lang.reflect.Method.invoke(Method.java:511)
11 com.facebook.internal.Utility.invokeMethodQuietly(Utility.java:524)
12 com.facebook.internal.AttributionIdentifiers.getAndroidId(AttributionIdentifiers.java:85)
13 com.facebook.internal.AttributionIdentifiers.getAttributionIdentifiers(AttributionIdentifiers.java:110)
14 com.facebook.AppEventsLogger.getSessionEventsState(AppEventsLogger.java:716)
15 com.facebook.AppEventsLogger.access$600(AppEventsLogger.java:111)
16 com.facebook.AppEventsLogger$5.run(AppEventsLogger.java:673)
17 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
18 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
19 java.lang.Thread.run(Thread.java:856)
Thread: socketReader
0 org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method)
1 org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:671)
2 to.talk.doorProxy.socket.DoorSocket.readNBytestFromSocket(DoorSocket.java:256)
3 to.talk.doorProxy.socket.DoorSocket.readLength(DoorSocket.java:245)
4 to.talk.doorProxy.socket.DoorSocket.startReadingOnSocket(DoorSocket.java:224)
5 to.talk.doorProxy.socket.DoorSocket.access$000(DoorSocket.java:31)
6 to.talk.doorProxy.socket.DoorSocket$1.onRun(DoorSocket.java:71)
7 to.talk.exception.CrashOnExceptionRunnable.run(CrashOnExceptionRunnable.java:26)
8 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
9 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10 java.util.concurrent.FutureTask.run(FutureTask.java:137)
11 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
13 java.lang.Thread.run(Thread.java:856)
Thread: Thread-3295
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 crittercism.android.co.a(Unknown Source)
10 crittercism.android.cs.run(Unknown Source)
11 java.lang.Thread.run(Thread.java:856)
Thread: app-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1051)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: pool-12-thread-1
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
9 java.lang.Thread.run(Thread.java:856)
Thread: db-writer-0
0 java.lang.Object.wait(Native Method)
1 java.lang.Thread.parkFor(Thread.java:1231)
2 sun.misc.Unsafe.park(Unsafe.java:323)
3 java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
5 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1051)
6 java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:779)
7 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
8 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
9 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10 java.lang.Thread.run(Thread.java:856)
Thread: RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41bc8b20
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
5 java.lang.Thread.run(Thread.java:856)
Thread: RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41bd28a0
0 java.lang.Object.wait(Native Method)
1 java.lang.Object.wait(Object.java:401)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
4 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
5 java.lang.Thread.run(Thread.java:856)
Thread: CookieSyncManager
0 android.os.MessageQueue.nativePollOnce(Native Method)
1 android.os.MessageQueue.next(MessageQueue.java:118)
2 android.os.Looper.loop(Looper.java:118)
3 android.webkit.WebSyncManager.run(WebSyncManager.java:90)
4 android.webkit.CookieSyncManager.run(CookieSyncManager.java:61)
5 java.lang.Thread.run(Thread.java:856)
Please help me find out the reason for this exception.
Thanks
ASKER
Here is BaseLoggedInActivity.java file
package kujo.app.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import com.facebook.AppEventsLogger;
import kujo.app.BuildConfig;
import kujo.app.KujoExecutors;
import kujo.app.application.Device;
import kujo.app.application.VoipApplication;
import kujo.onboarding.OnboardingService;
import to.talk.app.UserActivityManager;
import to.talk.logging.Logger;
import to.talk.logging.LoggerFactory;
public class BaseLoggedInActivity extends ActionBarActivity {
protected static final String EXTRA_PARENT_ACTIVITY = "parent_activity_extra";
private OnboardingService _onboardingService;
private Logger _logger = LoggerFactory.getTrimmer(BaseLoggedInActivity.class.getSimpleName());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_onboardingService = VoipApplication.getOnboardingService();
boolean onboardingComplete = _onboardingService.isOnboardingComplete();
_logger.debug("onCreate base logged in activity. onboarding complete: {} {}", onboardingComplete, BaseLoggedInActivity.this.getClass().getSimpleName());
if (!onboardingComplete) {
Class nextClass = getActivityClass();
if (!nextClass.equals(this.getClass())) {
_logger.debug("Redirecting to {} and finishing current activity: {}", nextClass, BaseLoggedInActivity.this.getClass().getSimpleName());
Intent intent = new Intent(this, getActivityClass());
startActivity(intent);
finish();
}
}
}
private Class<? extends BaseLoggedInActivity> getActivityClass() {
boolean hasCreatedMCVerificationSession = _onboardingService.hasCreatedMCVerificationSession();
boolean hasVerificationFailed = _onboardingService.hasVerificationFailed();
_logger.debug("has created MC Verification sesion: " + hasCreatedMCVerificationSession + " has verification failed : " + hasVerificationFailed);
if (!(hasCreatedMCVerificationSession)) {
return OnboardingActivity.class;
} else {
if (hasVerificationFailed) {
return getVerificationFailedActivity();
} else {
return getVerificationActivity();
}
}
}
@Override
protected void onResume() {
super.onResume();
if (BuildConfig.IS_FB_SDK_ENABLED) {
AppEventsLogger.activateApp(getApplicationContext(), BuildConfig.FB_APP_ID);
}
}
@Override
protected void onPause() {
super.onPause();
if (BuildConfig.IS_FB_SDK_ENABLED) {
// AppEventsLogger.deactivateApp(getApplicationContext());
}
}
protected Class<? extends BaseLoggedInActivity> getVerificationActivity() {
return canPerformNumberVerificationFromCurrentDevice() ? VerificationCallingDeviceActivity.class :
VerificationForNonCallingDevicesActivity.class;
}
protected Class<? extends BaseLoggedInActivity> getVerificationFailedActivity() {
return canPerformNumberVerificationFromCurrentDevice() ? VerificationFailedCallingDeviceActivity.class
: VerificationFailedNonCallingDevicesActivity.class;
}
protected boolean canPerformNumberVerificationFromCurrentDevice() {
return Device.getInstance().canPerformNumberVerificationFromCurrentDevice();
}
@Override
protected void onStop() {
super.onStop();
KujoExecutors.app.execute(new Runnable() {
@Override
public void run() {
UserActivityManager.getInstance().decrementActiveActivities();
}
});
}
@Override
protected void onStart() {
super.onStart();
KujoExecutors.app.execute(new Runnable() {
@Override
public void run() {
UserActivityManager.getInstance().incrementActiveActivities();
}
});
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi
But its a fragment and getactivity() returns the activity of the current fragment. I think we cant use 'this' when accessing the current activity in a fragment
But its a fragment and getactivity() returns the activity of the current fragment. I think we cant use 'this' when accessing the current activity in a fragment
ASKER
Hi,
I found something related to this error here -
http://stackoverflow.com/questions/11631408/android-fragment-getactivity-sometime-returns-null
Probably this could help towards the answer. But still i am unable to figure it out
I found something related to this error here -
http://stackoverflow.com/questions/11631408/android-fragment-getactivity-sometime-returns-null
Probably this could help towards the answer. But still i am unable to figure it out
ASKER
Hi,
I too think that getActivity() is returning NULL. But the issue is that this is not happening everytime. Its happening in some random cases.
I too think that getActivity() is returning NULL. But the issue is that this is not happening everytime. Its happening in some random cases.
ASKER
Following is my current Analysis :
The NullPointerException is occuring at line :
android.content.ComponentN
I checked out source for ComponentName.java . The line corresponds to the following -
public ComponentName(Context pkg, Class<?> cls) {
mPackage = pkg.getPackageName();
mClass = cls.getName(); -- -line No. 75
}
Here the line on which the Exception is being thrown is : mClass = cls.getName();
But that means the CallActivity.class is being passed Null in the following function :
private void callContact(ContactItem contactItem) {
Intent callActivityIntent = new Intent(getActivity(), CallActivity.class);
CallItem callItem = new CallItem(contactItem, false);
callActivityIntent.putExtr
startActivity(callActivity
}
How could this be so?? Why its being passed as NULL.
CallActivity.java is defined in the package package kujo.app.ui.activecall
BasePreCallFragment.java is in package kujo.app.ui
Can this be causing any issue ?
Following is my AndroidManifest.xml file which is inside app folder :
Open in new window