android – 任何人都可以帮我理解我程序的线程吗?

前端之家收集整理的这篇文章主要介绍了android – 任何人都可以帮我理解我程序的线程吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我向你们寻求一个程序的帮助,似乎它会起作用.如果我能让线程/ asynctask工作.我已经尝试过使用线程,但我没有让它工作.我试图进行线程化的原因是因为我的程序在加载时崩溃了,基本上它假设要做的是发送电子邮件,如果有人正在打电话,因为我总是错放我的手机或者保持静音,我我不知道.

服务-

@H_502_7@ public class Callservice extends Service { PhoneStateListener listener; TelephonyManager tm; @Override public void onCreate() { Toast.makeText(getApplicationContext(),"Service has started",Toast.LENGTH_LONG).show(); listener = new MyphoneStateListener(); tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE); } public class MyphoneStateListener extends PhoneStateListener { public void onCallStateChanged(int state,String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_RINGING: sendemail(); break; case TelephonyManager.CALL_STATE_OFFHOOK: default: break; } super.onCallStateChanged(state,incomingNumber); } } private void sendemail() { Intent i = new Intent(Intent.ACTION_SEND); i.setType("message/rfc822"); i.putExtra(Intent.EXTRA_EMAIL,new String[]{"random@gmail.com"}); i.putExtra(Intent.EXTRA_SUBJECT,"phone is ringing"); i.putExtra(Intent.EXTRA_TEXT,"email successfully sent"); startActivity(Intent.createChooser(i,"send mail...")); Toast.makeText(getApplicationContext(),"Email has been sent",Toast.LENGTH_LONG).show(); try { startActivity(Intent.createChooser(i,"Send Email...")); } catch(android.content.ActivityNotFoundException ex) { } } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } }

活动-

@H_502_7@public class MainActivity extends Activity { Callservice callservice = new Callservice(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); callservice.onCreate(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main,menu); return true; } }
最佳答案
更改MainActivity活动以及从Activity启动Service:

@H_502_7@ public class MainActivity extends Activity { //Callservice callservice = new Callservice(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startService(new Intent(this,Callservice.class)); } // your code here...

并确保您已在AndroidManifest.xml中添加了您的服务:

@H_502_7@

猜你在找的Android相关文章