Android: Startup and Download Settings

I am having a problem initializing my application correctly after autostarting.

I was able to start autorun, after reboot the app shows as started but the timer doesn't work. I am assuming that MyApp's onCreate function is not being called when I call context.startService (). Timers are set in the doActivity () function of MyApp.

I would really appreciate any advice on what I might be doing wrong or links to good tutorials. :)

manifest :

    <activity android:name=".MyApp"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver android:name="MyApp_Receiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>[/syntax]

      

MyApp_Receiver is a BoradcastReciever with the following two functions

public void onReceive(Context context, Intent intent) {
    // Do Autostart if intent is "BOOT_COMPLETED"
    if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
    {
        // Start the service
        context.startService(new Intent(context, MyApp.class));
    }
    // Else do activity
    else
        MAIN_ACTIVITY.doActivity();
}

public static void setMainActivity(MyApp activity)
{
    MAIN_ACTIVITY = activity;
}

      

MyApp extends PreferenceActivity and has onCreate () and doActivity (), doActivity () reads preferences and sets a timer based on them.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Show preferences
    addPreferencesFromResource(R.xml.preferences);;

    // Register Preference Click Listeners
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);


    // Prepare for one-shot alarms
    if (mIntent == null)
    {
        mIntent = new Intent(MyApp.this, MyApp_Receiver.class);
        mSender = PendingIntent.getBroadcast(MyApp.this,
                0, mIntent, 0);
        MyApp_Receiver.setMainActivity(this);
    }

    // Refresh and set all timers on start
    doActivity();
}

      

+2


a source to share


1 answer


Timers are set in the doActivity () function of MyApp.

It will never work. MyApp

is an action that will not be created until the user logs in and runs it.



Read SharedPreferences

in onReceive()

and set alarms there.

+3


a source







All Articles