2017-12-11 28 views
1

私はAndroidスタジオを使用しています。起動時に実行されるデバッグアプリケーション

android.intent.action.BOOT_COMPLETEDを受信する私のアプリケーション用のBroadcastReceiverを追加しました。受信者はテストのためにToastを表示します。問題はAndroidが起動した直後に「App has stopped」というメッセージが表示されることです。

私の最初の質問は、起動時にデバッグしてどこで問題が発生しているのかというと、私の最初の質問です。 Android Studioではその問題を参照するログは表示されないためです。

私の2番目の質問は、問題自体に関連しています。ここでは、コードです: XML:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="myapp"> 

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name="MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver 
      android:name=".AutoStartReceiver" 
      android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

    </application> 

</manifest> 

のJava:BroadcastReceiver

public class AutoStartReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "loaded", Toast.LENGTH_LONG).show(); 
     throw new UnsupportedOperationException("Not yet implemented"); 
    } 
} 

は3番目の質問です:それはいくつかの重い仕事をするためにOKです(いくつかのファイルを読み込み、AlarmManagerを設定)受信機にサービスを作成するのではなく、 API 26ではAndroidがサービスに多くの制限をかけているためです。

は、ブート時に起動

答えて

3

アプリは、あなたのデバイスは通常、アプリ自体が起動するでしょう直前に発生したデバッグ接続を取得する第二をデバッグすることができ、ありがとうございました。単にlogcatを開いて、再起動後にデバイスとアプリケーションがポップアップするのを見てください。これは、アプリケーションがデバッグ可能であることを前提としています。そうでないアプリは単にログを表示しません。

あなたは、このコードの明白な理由のために MyApp has unfortunately stoppedメッセージが表示されます:

public class AutoStartReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "loaded", Toast.LENGTH_LONG).show(); 
     throw new UnsupportedOperationException("Not yet implemented"); 
    } 
} 

あなたはそれが停止されますつまり、例外をスローします。

妥当な量のRAMとプロセッサー内で使用されているサービス(極端に重いサービスはバッテリーとメモリーを節約するために殺される可能性が高い)であれば、サービスで何をするのですか?

クリックし、デバッグを開始する

adb shell am set-debug-app -w --persistent <your.app.package> 

アプリがエミュレータ上での入力を求められたときにアンドロイドプロセスにデバッガをアタッチ:

+0

、それはそれでした。しかし、私はそれがAndroidスタートアップで読み込まれているときに、アプリのログを取得することはできません、ログは空です – hiddeneyes02

関連する問題