Wakelock不保持CPU运行

时间:2014-01-23 07:48:30

标签: android sms wakelock

我的应用 - 读取包含移动设备的扫描仪的文本文件和每个文件的消息。 根据文本文件向每个移动设备发送短信。 每次SMS没有从20到140nos不等,大约需要8到10分钟。

如果我通过与触摸的持续交互来保持CPU运行,则所有SMS都会正确发送。没问题。

如果我不接触并将设备放在一边,则只会发送15 - 20条短信。

我试过用 1保持屏幕开启 - 不工作。 2使用部分唤醒锁 - 不工作 3使用部分带有处理器的部分唤醒锁,用于在10分钟后释放唤醒锁 - 仍然只发送15 - 20个短信,但唤醒锁在10分钟后重新发布。 4使用保持屏幕与部分唤醒锁 - 仍然与上面相同,不起作用。

这是我的代码。

public class Ardtxt extends Activity {
private Button buttonsendsms;
String gg = "my app";   
File fileexists ;
String mdn, msg;
String tomdn = "9123456789";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_ardtxt);
//*********************
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    Button buttonsendsms = (Button) findViewById(R.id.buttonsendsms);


    buttonsendsms.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {

            PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
            final WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                    "ardtxtwakelock");
            wakeLock.acquire();

            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
              @Override
              public void run() {
                  Toast.makeText(getApplicationContext(), "All SMS are sent.",Toast.LENGTH_LONG).show();
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage("9123456789", null, "wake lock released", null, null);
                    wakeLock.release();
              }
            }, 600000);


            Toast.makeText( getApplicationContext(), "start" , Toast.LENGTH_LONG).show();
            Log.d("chk","app start");

            File directory = new File(Environment.getExternalStorageDirectory()+File.separator+"kk");
            directory.mkdirs();

            Log.d("mytxt app App", Environment.getExternalStorageDirectory()+File.separator+"kk");
             fileexists = new File(Environment.getExternalStorageDirectory()+File.separator+"kk"+File.separator, "Sample1.txt" );
               if (fileexists.exists()) {
                 //Do action
                   Log.d("app exxxxx",String.valueOf(fileexists));
                   Toast.makeText( getApplicationContext(), "subject file exists" , Toast.LENGTH_LONG).show();
                   System.out.println("file exists so can be used by us");
               Log.d("Ketan check", "Sample1.txt exists");
               try {
                   Readtxtfile();
               }catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                Log.d(gg,"Exception : file not found");
                   e.printStackTrace();
                    Toast.makeText( getApplicationContext(), "crpg file not found" , Toast.LENGTH_LONG).show();

                }
               }
        }

        });}

让我知道我错过了什么,或者为什么部分唤醒锁没有让CPU保持活着。

感谢。

1 个答案:

答案 0 :(得分:0)

是的,我已添加了wakelock权限。 但是,我不知道如何使用线程编写服务代码。如果可能,请提供示例代码。搜索没有透露任何有用的代码或我无法理解。

感谢。