Android 分类项目类); in.putExtra(“用户名”,用户); 星触觉(in); } }); lst_stockListing.setOnItemClickListener(新的OnItemClickListener() { public void onIt

Android 分类项目类); in.putExtra(“用户名”,用户); 星触觉(in); } }); lst_stockListing.setOnItemClickListener(新的OnItemClickListener() { public void onIt,android,performance,android-layout,Android,Performance,Android Layout,分类项目类); in.putExtra(“用户名”,用户); 星触觉(in); } }); lst_stockListing.setOnItemClickListener(新的OnItemClickListener() { public void onItemClick(AdapterView arg0,视图项,整型位置,长arg3) { planet=listAdapter.getItem(位置); planet.toggleChecked(); viewHolder=(SelectVi

分类项目类); in.putExtra(“用户名”,用户); 星触觉(in); } }); lst_stockListing.setOnItemClickListener(新的OnItemClickListener() { public void onItemClick(AdapterView arg0,视图项,整型位置,长arg3) { planet=listAdapter.getItem(位置); planet.toggleChecked(); viewHolder=(SelectViewHolder)item.getTag(); viewHolder.getCheckBox().setChecked(planet.isChecked()); 如果(lstcompanyname.size()==0) { 添加(viewHolder.getTextView().getText().toString()); 添加(viewHolder.getPrice().getText().toString()); Log.d(“添加”,viewHolder.getTextView().getText().toString()); } 其他的 {
对于(inti=0;iYou正在调用
Thread.sleep()
,并通过http()调用
downloadFileViaHTTP()
(我假设它正在进行网络i/O)主(UI)线程。那不好。你不能像那样阻止主线程。你能建议一种方法,让我每1分钟执行一个线程吗?你可以创建一个
线程
,然后运行
()
method sleep,直到它应该再次运行。这不是问题。问题是您正在进行网络I/O,并在主(UI)线程上睡眠。这是不允许的。搜索stackoverflow,您将找到许多如何执行此操作的示例(或者看看Android文档,也有很多关于如何使用后台线程的例子)
import android.widget.SimpleAdapter;

@SuppressLint("NewApi")
public class StockListing extends Activity 
{
    int flag=0;
    protected static final String NULL = null;
    public ListView lst_stockListing;
    Button btn_leftPanel, btn_addstock;
    LinearLayout layoutMain;
    SimpleAdapter adapter;
    mItems planet;
    PeriodicChecker p;
    String msg=null,user=null;
    SelectViewHolder viewHolder;
    View view_check;
    float val = 0;
    boolean dataNotFound;
    ProgressDialog progressDialog,progressDialog1;
    ArrayList<Boolean> b=new ArrayList<Boolean>();
    AlertDialog diaBox;
    private mItems[] itemss;
    private ArrayAdapter<mItems> listAdapter;
    private ArrayAdapter<com.indusa.stockapp.stockListing.Read_quotes.mItems> listAdapter1;
    ArrayList<String> checked = new ArrayList<String>();
    ArrayList<String> lstcompanyname=new ArrayList<String>();
    List<HashMap<String, String>> fillMaps ;
    ArrayList<String> lstprice=new ArrayList<String>();
    ArrayList<mItems> planetList = new ArrayList<mItems>();
    String[] from = new String[] {"companyName","currentPrice", "checkBox"};
    int[] to = new int[] { R.id.txtcompanyname, R.id.txtprice, R.id.CheckBox};

    DownloadFileviaHTTP d;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.stock_listting);
        btn_leftPanel = (Button) findViewById(R.id.btn_leftpanel);
        btn_addstock = (Button) findViewById(R.id.btn_addstock);
        lst_stockListing = (ListView) findViewById(R.id.lst_stocklisting);
        lst_stockListing.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        itemss = (mItems[]) getLastNonConfigurationInstance();

        user=getIntent().getExtras().getString("USERNAME");
        d=new DownloadFileviaHTTP();
        dataNotFound = false;

        InputStream is = getResources().openRawResource(R.raw.quotes);
        Log.d("inputstream ",is.toString());
        planetList=d.downloadFileViaHTTP(is,0);

        listAdapter = new com.indusa.stockapp.stockListing.DownloadFileviaHTTP.SelectArralAdapter(this,planetList);
        lst_stockListing.setAdapter(listAdapter);

        p=new PeriodicChecker();
        p.start();

        function();
    }

    public class PeriodicChecker extends Thread
    {
        @Override
        public void run()
        {
            while(true) 
            {
               try 
               {
                   final Handler refresh = new Handler(Looper.getMainLooper());
                refresh.post(new Runnable() 
                {
                    public void run()
                    {
                            try
                            {
                                Log.d("StockListing","StockListing");
                                Log.d("thread","thread");
                                if (isNetworkAvailable())
                                {

                                    planetList.clear();
                                    lstcompanyname.clear();
                                    try
                                    {
                                        Log.d("called","called");
                                        planetList=d.downloadFileViaHTTP(null,1);
                                    }
                                    catch (Exception e)
                                    {
                                        Log.d("exception thread","Exception Thread");
                                        InputStream is = getResources().openRawResource(R.raw.quotes);
                                        Log.d("inputstream ",is.toString());
                                        planetList=d.downloadFileViaHTTP(is,0);
                                        e.printStackTrace();
                                    }
                                    Log.d("outside","outside");
                                    Thread.sleep(500);
                                    progressDialog.dismiss();
                                }
                                else
                                {
                                    InputStream is = getResources().openRawResource(R.raw.quotes);
                                    Log.d("inputstream ",is.toString());
                                    planetList=d.downloadFileViaHTTP(is,0);
                                }
                                listAdapter = new com.indusa.stockapp.stockListing.DownloadFileviaHTTP.SelectArralAdapter(StockListing.this,planetList);
                                lst_stockListing.setAdapter(listAdapter);
                            }
                            catch (Exception e) 
                            {
                                e.printStackTrace();
                            }
                    }
                });
                Thread.sleep(50000);
                } 
               catch (InterruptedException e) 
               {
                   e.printStackTrace();
               }
            }
        }
    }
    private boolean isNetworkAvailable() 
    {
        boolean haveConnectedWifi = false;
        boolean haveConnectedMobile = false;

        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();
        for (NetworkInfo ni : netInfo) 
        {
            if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                if (ni.isConnected())
                    haveConnectedWifi = true;
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                if (ni.isConnected())
                    haveConnectedMobile = true;
        }
        return haveConnectedWifi || haveConnectedMobile;
    }

        void function() 
    {

        btn_leftPanel.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v) 
            {
                if (p!=null)
                    p=null;

                Intent in = new Intent(StockListing.this, ListingItem.class);
                in.putExtra("USERNAME", user);
                startActivity(in);
            }
        });

        lst_stockListing.setOnItemClickListener(new OnItemClickListener() 
        {
            public void onItemClick(AdapterView<?> arg0, View item, int position,long arg3)
            {   
                planet = listAdapter.getItem(position);
                planet.toggleChecked();
                viewHolder = (SelectViewHolder) item.getTag();
                viewHolder.getCheckBox().setChecked(planet.isChecked());                

                if (lstcompanyname.size()==0)
                {
                    lstcompanyname.add(viewHolder.getTextView().getText().toString());
                    lstprice.add(viewHolder.getPrice().getText().toString());
                    Log.d("added",viewHolder.getTextView().getText().toString());
                }
                else
                {
                    for (int i=0;i<lstcompanyname.size();i++);
                    {
                        if (lstcompanyname.contains(viewHolder.getTextView().getText().toString())==true)
                        {
                            lstcompanyname.remove(viewHolder.getTextView().getText().toString());
                            lstprice.remove(viewHolder.getPrice().getText().toString());
                            Log.d("removed",viewHolder.getTextView().getText().toString());
                        }
                        else
                        {
                            lstcompanyname.add(viewHolder.getTextView().getText().toString());
                            lstprice.add(viewHolder.getPrice().getText().toString());
                            Log.d("added",viewHolder.getTextView().getText().toString());
                        }
                    }
                }
            }
        });
        btn_addstock.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View v) 
            {

                int flag=0;
                DatabaseHelper db = new DatabaseHelper(StockListing.this,"StockApp");
                db.getReadableDatabase();
                b=db.match_record_mystock("TBL_MYSTOCK",lstcompanyname,db);
                db.close();

                progressDialog1 = ProgressDialog.show(StockListing.this, "", "Adding Record...");
                for(int i=0;i<b.size();i++)
                { 
                    Log.d("availability"," " +b.get(i));
                    if (b.get(i)==false)
                    {
                        flag=1;
                        DatabaseHelper db1 = new DatabaseHelper(StockListing.this,"StockApp");
                        db1.getWritableDatabase();

                        ////SYMBOL,NAME,CURR_PRICE,PREV_PRICE,AVG_PRICE,TRADESIDE,QUANTITY,GAIN,HIGH,LOW,PREVIOUS_CLOSE};
                        db1.addRecord_mystock("TBL_MYSTOCK",NULL,lstcompanyname.get(i),lstprice.get(i),lstprice.get(i), "0"," 0","0", "0","0", "0", "0", db);
                        db1.close();
                    }
                }
                progressDialog1.dismiss();
                if (flag==0)
                {

                    diaBox = makeAndShowDialogBox();
                    diaBox.show();
                }
                if (flag==1)
                {
                    Intent in=new Intent(StockListing.this,StockListing.class);
                    in.putExtra("USERNAME",user);
                    startActivity(in);
                }

                SparseBooleanArray checked = lst_stockListing.getCheckedItemPositions();
                ArrayList<String> selectedItems = new ArrayList<String>();

                    for (int i = 0; i < checked.size(); i++) 
                    {
                        // Item position in adapter
                        final boolean ischecked = checked.valueAt(i);
                        if (ischecked)
                        {
                            try
                            {
                                mItems tag = (mItems) lst_stockListing.getItemAtPosition(checked.keyAt(i));
                                String selectedName=tag.getName();   

                                if (checked.valueAt(i)) 
                                {
                                    int position = checked.keyAt(i);            
                                }
                            } 
                            catch (Exception e) 
                            {
                                e.printStackTrace();
                            }
                        }
                    }                   
            }
        });
    }

    private AlertDialog makeAndShowDialogBox() 
    {
        AlertDialog myQuittingDialogBox = new AlertDialog.Builder(this)
                .setTitle("Select Stocks")
                .setMessage("Selected stocks already in script or no stocks selected")

                .setPositiveButton("OK", new DialogInterface.OnClickListener() 
                {
                    public void onClick(DialogInterface dialog, int whichButton) 
                    {
                        // whatever should be done when answering "YES" goes
                        // here
                        msg = "YES " + Integer.toString(whichButton);
                        Log.d("msg", msg);
                        // txtMsg.setText(msg);
                    }
                })// setPositiveButton
                .create();
        return myQuittingDialogBox;
    }
}