Crash upon screen being unlocked

天涯浪子 提交于 2019-12-21 22:02:17

问题


My app runs fine besides when the user stops using their phone long enough for the screen to lock, when they unlock it the app crashes and im a bit clueless as to why. Here is the error:

here is the lazy adapter:

    package com.buhz.helpers;

import java.util.ArrayList;     
import java.util.HashMap;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.buhz.login.R;
import com.buhz.login.TabHostFragmentActivity;
import com.loopj.android.image.SmartImageView;



public class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_row, null);

        TextView name = (TextView)vi.findViewById(R.id.name); // title
        TextView message = (TextView)vi.findViewById(R.id.message); // artist name
        TextView created = (TextView)vi.findViewById(R.id.created); // duration
        SmartImageView thumb_image = (SmartImageView) vi.findViewById(R.id.list_image);



        HashMap<String, String> update = new HashMap<String, String>();
        update = data.get(position); 

        // Setting all values in listview
        name.setText(update.get("name"));
        message.setText(update.get("message"));
        created.setText(update.get("created"));
        thumb_image.setImageUrl(update.get("thumb_img"));
        name.setOnClickListener(new myOnClickListener(position));
        thumb_image.setOnClickListener(new myOnClickListener(position));
        return vi;
    }

    public class myOnClickListener implements OnClickListener{
        private int position;
        private String clicked_uid;
        public myOnClickListener(int position){
            this.position=position;
        }
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


            HashMap<String, String> update = new HashMap<String, String>();
            update = data.get(position); 
            Log.i("Update Position:", update.toString());
            clicked_uid=update.get("uid");
            Log.d("Clicked UID:", clicked_uid+"");
            Intent i = new Intent(activity.getApplicationContext() , TabHostFragmentActivity.class);
            i.putExtra("profile_uid", clicked_uid);
            activity.startActivity(i);
            activity.finish();

        }

    }
}

回答1:


As the doc says:

When a configuration change occurs at runtime, the activity is shut down 
and restarted by default, but declaring a configuration with this attribute
will prevent the activity from being restarted. 

So i change the AndroidManifest.xml to include all configurations.

android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection"

It works for me.




回答2:


You have to check your application states by making sure that you are handling all possible states. This problem happen when your application state goes into unhandled state like onResume or onStart.

This article will help you understand each state and when it is invoked

http://www.android-app-market.com/android-activity-lifecycle.html



来源:https://stackoverflow.com/questions/16268889/crash-upon-screen-being-unlocked

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!